通过程序将对象分配给数组

programaticly assign objects to an array

本文关键字:分配 数组 对象 过程 程序      更新时间:2024-01-30

我有一个要向其中添加对象的数组。我想用数字控制添加到数组中的对象数量。

for (var i = 0; i < numberOfCountries; i++) {
    chartArray[i] = obj[i];
}

我正试图得到这个:

    chartArray[0] = obj0;
    chartArray[1] = obj1;
    chartArray[2] = obj2;
    chartArray[3] = obj3;
    chartArray[4] = obj4;
    chartArray[5] = obj5;

假设obj变量在窗口范围内可用:

for (var i=0; i<numberOfCountries; i++) {
    chartArray[i] = window["obj"+i];
}

你可能想要这个吗?

for (var i=0; i<numberOfCountries; i++) {
    chartArray.push(this["obj"+i]);
}

假设for循环的索引为0:

你有这个代码:

chartArray[0] = obj[0];

在这段代码中,您尝试将索引为0的名为"obj"的数组的elemento推送到索引0中的chartArray。

要执行所需操作,必须通过在单词"obj"中添加一个序号来解析对象的名称,这样才能使用eval()。

尝试:

for (var i = 0; i < numberOfCountries; i++) {
   //for debug uncomment nexr line 
   //console.log("name:","obj"+i,"eval:",eval("obj"+i));
   if(typeof eval("obj"+i) !== "undefined") return chartArray.push(eval("obj"+i));
}

如果没有定义名为"obj"+i的对象,则循环继续到下一个"Country"whituut添加到您的数组中。

再见。

我真的觉得你问错了问题(请参阅https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。您引用的对象应该位于数组中的第一位

您可以这样做:

var char = new Array();
for (var i = 0; i < number; i++)
{
    char.push(obj[i]);
}