访问obj in for循环

时间:2018-05-22 08:41:27

标签: javascript



x[[1]]

objVar = "one";
varID = ["Result1", "Result2"];
var one = {
  Result1: 5,
  Result2: 100
}

for (i = 0; i < varID.length; i++) {
  textID = '#' + varID[i];
  document.querySelector(textID).innerHTML = "??";
}
&#13;
&#13;
&#13;

代替问号(<div id="Result1"></div> <div id="Result2"></div>),我需要获得??的值。这可能是直接的(即没有objVar[i])?

4 个答案:

答案 0 :(得分:1)

 window[objVar][ varID[i] ]

你应该选择另一个数据结构:

var lookup = {
 one: {
  Result1: 5,
  Result2: 100
 }
};

...因为你应该尽量不要使用window

答案 1 :(得分:1)

[编辑] :正如您所说,objVar也可以更改,因此您可以将one对象作为父对象的属性并访问它。如果没有,那么您可以将其设为全局并将其用作window对象的属性,但我不建议创建全局变量。

您可以使用括号表示法访问对象one上的属性,如下所示:

var masterObj = {
 one : {
  Result1: 5,
  Result2: 100
 },
 two: : {
  Result1: 5,
  Result2: 100
 },
}


document.querySelector(textID).innerHTML = masterObj[objVar][varID[i]];

OR

document.querySelector(textID).innerHTML = window[objVar][varID[i]];//for global variable

答案 2 :(得分:1)

你可以这样称呼:

super

实际上,objVar可以改变。取决于此,对象需要访问。

基于此评论:

... = one[varID[i]];

&#13;
&#13;
... = window[objVar][varID[i]]
&#13;
objVar = "one";
varID = ["Result1", "Result2"];
var one = {
  Result1: 5,
  Result2: 100
}

for (i = 0; i < varID.length; i++) {
  textID = '#' + varID[i];
  document.querySelector(textID).innerHTML = window[objVar][varID[i]];
}
&#13;
&#13;
&#13;

其他示例可以使用<div id="Result1"></div> <div id="Result2"></div>

&#13;
&#13;
Object.keys()
&#13;
objVar = "one";

var one = {
  Result1: 5,
  Result2: 100
}

Object.keys(window[objVar]).forEach(
     res => document.querySelector('#'+res).innerHTML = one[res]
)
&#13;
&#13;
&#13;

答案 3 :(得分:0)

我使用console.log进行测试,你可以使用document.querySelector。

var objVar = {

    one: {
        Result1: 5,
        Result2: 100
    },

    two: {
        Result3: 12,
        Result4: 13
    }

};

var varID = ["Result1", "Result2"];
var textID;

//chose object from user or any way you want ...
var customObject = "one";


for (let i = 0; i < varID.length; i++) {
    textID = '#' + varID[i];
    console.log(objVar[customObject][varID[i]]);
}