Javascript循环和构建数组但变量索引未定义

时间:2011-09-15 19:21:14

标签: javascript arrays loops undefined

不要笑认为我有一个漫长的一天工作的金发时刻,因为我有点与JS练习。任何帮助我认为是一个愚蠢的简单问题。

optionarray = [];

for(i=0;i<response.length;i++) {

    optionarray[i]['content'] = response[i]['name'];
    optionarray[i]['value'] = response[i]['id'];
}

我一直在尝试将其添加到数组并构建它时,未定义optionarray [i]。我知道我做了一些荒谬可笑的事我只是记不清楚:)

非常感谢您提前提供任何帮助。

4 个答案:

答案 0 :(得分:3)

optionarray = [];

for(i=0;i<response.length;i++) {

    optionarray[i] = {
            'content' :response[i]['name'], 
            'value': response[i]['id']
    };

}

答案 1 :(得分:1)

您正在尝试访问不存在的optionarray[i]属性。

在每次迭代中你应该做的是

  1. optionarray
  2. 添加新对象
  3. 设置该对象的属性
  4. 你可以像这样同时做两件事:

    optionarray = [];
    
    for(i=0;i<response.length;i++) {
        optionarray.push({
            content: response[i]['name'],
            value: response[i]['id']
        });
    }
    

答案 2 :(得分:1)

我认为你只需要在for循环中初始化optionarray [i]对象:

var optionarray = []; //NOTE: I added var here so because otherwise it's an implicit global

for(i=0;i<response.length;i++) {
    optionarray[i] = {};
    optionarray[i]['content'] = response[i]['name'];
    optionarray[i]['value'] = response[i]['id'];
    // BETTER: optionarray.push({content: response[i]['name'], value: response[i]['id']});
}

如果我没弄错的话。

答案 3 :(得分:0)

试试这个

optionarray[i] = [];
optionarray[i]['content'] = response[i]['name'];     
optionarray[i]['value'] = response[i]['id']; 

您需要将optionarray [i]定义为数组