当我尝试使用循环在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
}
}
答案 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);
}
}