javascript - 如何将元素id转换为已定义的变量

时间:2017-01-21 10:29:09

标签: javascript

我有这段代码

var myObject = {
  prop1: [ 
    'this is prop1:',
    ['answer1', 'prop2'],
    ['answer2', 'prop3']
  ],

  prop2: [ 
    'this is prop2:',
    ['answer1', 'prop1'],
    ['answer2', 'prop3'], 
  ],

  prop3: [ 
    'this is prop3:',
    ['answer1', 'prop1'],
    ['answer2', 'prop2'],
  ]
};

现在让我说我做这个变量

var myVar = myObject.prop1;

所以假设我想要console.log(myVar);

它会给我数组prop1及其所有值。

我想改变变量myVar并将其更改为:

myVar = myObject.prop2;

我想使用答案旁边附带的字符串来完成此操作 所以问题1的answer1基本上将prop2作为字符串。

我想获取该字符串并将其转换为属性prop2来调用它。

我试过了:

var pullProp = myObject.prop1[1][1];  // which is the string prop2

myVar = myObject.pullProp;

console.log(myVar);  // i get undefined

2 个答案:

答案 0 :(得分:1)

您可以使用

的内容
myObject.prop1[1][1] // 'prop2'

的关键
myVar = myObject[myObject.prop1[1][1]];

您可以查看property accessors

  

属性访问器通过使用点表示法或括号表示法提供对对象属性的访问。

     

<强>语法

object.property
object["property"]

var myObject = {
        prop1: ['this is prop1:', ['answer1', 'prop2'], ['answer2', 'prop3']],
        prop2: ['this is prop2:', ['answer1', 'prop1'], ['answer2', 'prop3']],
        prop3: ['this is prop3:', ['answer1', 'prop1'], ['answer2', 'prop2']]
    },
    myVar = myObject.prop1;

console.log(myVar);
myVar = myObject[myObject.prop1[1][1]];
console.log(myVar);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

myObject上没有定义名为forall k. (k -> k -> *) -> Constraint的属性。 pullProp是在与myObject相同的范围级别定义的变量。

我认为你想要实现的目标是:

pullProp