定義當試圖推動項目到一個數組JavaScript中它給出了一個錯誤,下面的僞代碼說明發生了什麼:陣列[關鍵] .push未在JavaScript
var data = new Array();
for(...) {
data[key].push(item[i]);
}
它顯示以下錯誤:
Cannot read property 'push' of undefined
由於
定義當試圖推動項目到一個數組JavaScript中它給出了一個錯誤,下面的僞代碼說明發生了什麼:陣列[關鍵] .push未在JavaScript
var data = new Array();
for(...) {
data[key].push(item[i]);
}
它顯示以下錯誤:
Cannot read property 'push' of undefined
由於
如果需要的2D陣列,則必須初始化外數組的每個元素是一個數組。
// Have to check every array item, if it's not an array already, make it so
for(...) {
if (!data[key]) {
data[key] = [];
}
data[key].push(item[i]);
}
你總是可以做以下的,如果你知道內部陣列的數量,您需要:
var data = [[],[],[],[],[],[]];
在你的榜樣,因爲他們的變量名是關鍵,我假設你真正想要的數組的對象。如果您提前知道密鑰,則可以使用以下文字。
var data = {
myKey1: [],
myKey2: []
}
您定義了一個數據[key]數組,假設您知道密鑰,但在我的情況下,密鑰是在運行時定義的,位於for循環中 –
但我不知道前面的密鑰,我不知道其中很多我需要,這是我的問題,我需要尋找一種動態的方式來定義二維數組, 謝謝, –
然後第一段代碼是你在找什麼 –
因爲'data'是數組。除非'data [key]'持有一個數組,否則你會得到未定義的。考慮'var data = [1,2,3,4,5];'和'key'是第一個索引(1)。你試圖在一個整數上使用數組方法,這顯然無法工作。 –
@SterlingArcher給了你答案。 –
您可以從教程和文檔中瞭解有關數組的基礎知識:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array,http://eloquentjavascript.net/04_data.html 。 *也許*你想'data [key] = item [i]'。 –