【问题标题】:Javascript loop and build array but variable indexed undefinedJavascript循环并构建数组但变量索引未定义
【发布时间】:2011-09-15 19:21:14
【问题描述】:

别笑我觉得我有一个漫长的一天工作金发时刻,因为我有点不习惯 JS。任何帮助感谢我认为是一个愚蠢的简单问题。

optionarray = [];

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

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

尝试将 optionarray[i] 添加到数组并构建它时,我不断收到未定义的选项。我知道我做了一些非常愚蠢的事情,我只是不记得是什么:)

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

【问题讨论】:

  • 感谢大家的帮助。我是愚蠢的 :) 想太多 PHP 的方式 ;)

标签: javascript arrays loops undefined


【解决方案1】:
optionarray = [];

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

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

}

【讨论】:

    【解决方案2】:

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

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

    1. 将新对象添加到optionarray
    2. 设置该对象的属性

    你可以像这样同时做这两件事:

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

    【讨论】:

    • 我比我更喜欢这个解决方案,但我认为它是“push”而不是“push_back”
    • @PhilParsons:哎呀!那里的 C++ 错误 :) -- 已修复。
    • 哈,是的,我经常发现自己也在做类似的事情。这是我认为最好的方法。虽然我没有看到将数据从一个数组移动到另一个数组的意义(也许我错过了更大的图景!)
    【解决方案3】:

    我认为您只需要在 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']});
    }
    

    如果我没记错的话。

    【讨论】:

    • 感谢您的帮助,非常感谢 ;-)
    【解决方案4】:

    试试这个

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-26
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多