填充的二维数组不起作用

时间:2017-09-19 14:06:41

标签: javascript jquery arrays

当我尝试使用循环在javascript中创建二维数组时,它会出现以下错误:

  

无法设置未定义

的属性'indexis'

代码:

var indexes = [];
for (var i = 0; i < headingsArray.length; i++) {
            if (headingsArray[i].toLowerCase().indexOf('name') != -1) {
                indexes[i]['indexis'] = i;
                indexes[i]['headingis'] = headingsArray[i]; //assuming headingsArray exist
                indexes[i]['valueis'] = rows[0][i]; //assuming rows exist
            }
}

3 个答案:

答案 0 :(得分:2)

在访问对象的属性之前,您需要一个对象。

indexes[i] = indexes[i] || {}
indexes[i]['indexis'] = i;

答案 1 :(得分:2)

您还需要创建内部数组/对象,否则index[i]未定义,因此index[i]['indexis']将引发异常。

var indexes = [];
for (var i = 0; i < headingsArray.length; i++) {
    indexes[i] = {}; //<---- need this
    if (headingsArray[i].toLowerCase().indexOf('name') != -1) {
        indexes[i]['indexis'] = i;
        indexes[i]['headingis'] = headingsArray[i]; 
        indexes[i]['valueis'] = rows[0][i];
    }
}

您将其描述为多维数组,但您正在使用它,就好像它是一个对象数组(因为您正在访问命名属性,而不是编号属性)。所以我的示例代码是在每次迭代时创建对象。如果您打算拥有一个数组数组,那么请执行indexes[i] = [],并与indexes[i][0]而非indexes[i]['indexis']

等内容进行互动

答案 2 :(得分:0)

temp var 定义为字段初始化为null&amp;使用JavaScript的 push()功能

for (var i = 0; i < headingsArray.length; i++) {
var temp={indexis: null,headingis:null,valueis:null};;
            if (headingsArray) {
                temp['indexis'] = i;
               temp['headingis'] = headingsArray[i]; //assuming headingsArray exist
                temp['valueis'] = rows[0][i];
                indexes.push(temp);
            }
}