2017-09-19 46 views
0

當我嘗試創建使用循環JavaScript的二維數組,它給了我以下錯誤:二維數組填充不工作的JavaScript

Cannot set property 'indexis' of undefined

代碼:

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

多維數組在JavaScript中有時是一種痛苦.. https://stackoverflow.com/questions/966225/how-can-i-create-a-two-dimensional-array-in-javascript –

回答

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]['indexis']

2

你需要一個對象在訪問它的屬性之前。

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

它看起來更像一個由於命名的屬性,對象數組。 –

0

定義臨時VAR與現場互動初始化爲null &使用推()的JavaScript功能

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); 
      } 
}