首页 > 解决方案 > 分配字符串的变量值

问题描述

我是 Javascript 新手 - 我尝试在网上搜索无法将这种情况纳入上下文。

情况如下:

import * as People from ./People.json
import * as Education from ./Education.json
import * as Vehicle from ./Vehicle.json
...
function transpose(str : string) {
  let data = {};
  if(validate(str))  //validate function returns true if valid string
    data = str  //data takes in the string value and uses variable name
    runFile(data); //runFile expects data to be a JSON type
  ...
}

"People"本质上,如果假设 str = then data 将等于变量People或者如果 str = "Vehicle"data 将是变量,我如何将 str (字符串变量转换为变量)Vehicle

我知道这可以通过 {"People": People, "Vehicle": Vehicle} 的地图来完成,似乎应该有更好的方法?我也研究了 eval(str) 但这似乎没有奏效。

任何帮助,将不胜感激。

谢谢

标签: javascriptvariable-assignment

解决方案


“地图”确实是最好的方法。好消息是您可以使用速记属性名称(ES2015)节省一些击键:

import * as People from ./People.json
import * as Education from ./Education.json
import * as Vehicle from ./Vehicle.json

const lookup = {People,Education,Vehicle}; // equivalent to {"People":People, ...}

function transpose(str : string) {
  let data = {};
  if(validate(str))  //validate function returns true if valid string
    data = lookup[str]  //data takes in the string value and uses variable name
    runFile(data); //runFile expects data to be a JSON type
  ...
}

推荐阅读