我想知道如何創建一個數組,並使用嵌套for循環向其添加元素。如何聲明數組? 我想完成的陣列看起來像這樣:動態添加元素到二維數組
var array2d = {
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3],
};
我不想讓格式化爲對象的內部數組。我想要一個簡單的數組,我可以像這樣訪問:
var element = array2d[2][1]; //returns '1'
我想知道如何創建一個數組,並使用嵌套for循環向其添加元素。如何聲明數組? 我想完成的陣列看起來像這樣:動態添加元素到二維數組
var array2d = {
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3],
};
我不想讓格式化爲對象的內部數組。我想要一個簡單的數組,我可以像這樣訪問:
var element = array2d[2][1]; //returns '1'
什麼約翰Hartsock大概就是這個意思(他answer)是:
var my2DArray = [], i, j;
for(i = 0; i < 5; i++){
my2DArray.push([]);
for(j = 0; j < 5; j++){
my2DArray[i].push("Array Position " + i + ", " + j);
}
}
alert(my2DArray[0][0]); //will alert "Array Postion 0, 0"
alert(my2DArray[1][4]); //will alert "Array Postion 1, 4"
OR使用到每一個新的 '子陣列'(可以更快)一個臨時參考:
var my2DArray = [], i, j, tempRef;
for(i = 0; i < 5; i++){
tempRef = my2DArray[i] = [];
for(j = 0; j < 5; j++){
tempRef.push("Array Position " + i + ", " + j);
}
}
alert(my2DArray[0][0]); //will alert "Array Postion 0, 0"
alert(my2DArray[1][4]); //will alert "Array Postion 1, 4"
說明:
一個通常使用var arr=[];
創建一個數組並arr.push(/*content*/);
到一個新的數組項添加到數組的末尾(因此它是基本上相同arr[arr.length]=/*content*/;
)。
因此,如果你有一個數組(my2DArray
),然後添加新陣列(因爲數組通過引用傳遞,而不是複製)到主/根陣列:my2DArray.push([]);
使my2DArray[my2DArray.length]
參考這個新的數組(和一旦這個數組存在,你可以用它做些什麼:my2DArray[index][sub_index]
)。
所以,說你只有一個循環,那麼你也可以添加一個完整的新陣列單推:my2DArray.push([0,1,2,3]);
換句話說,(使用的是什麼。以上說明,)這個單一的生產線將正好創造你在你的問題給出爲例二維數組:
for(var array2d=[], i=0; i<4; array2d[i++]=[0, 1, 2, 3]);
alert( array2d[2][1] ); //returns '1'
順便說一句,在技術上也有甚至沒有數組在JavaScript中,只是一些特殊功能花哨的對象(優秀的解釋這裏:https://stackoverflow.com/a/2891043/588079)
儘管關於數組的最後一條評論是「相關的對象」是相關的,但還是應該指出,由於全局數組'構造函數作爲與'Object'分開的實體存在。 – ajp15243
wtf?!?添加url的更改是每個代碼塊最後一行的最後一個數組索引 – GitaarLAB
@ ajp15243:關於您的建議編輯:我使用了'/ * content * /',所以我不必解釋[objects,wrappers,values,原語等](http://stackoverflow.com/a/16115543/588079)。另外'JavaScript'(注意外殼)是指一個引擎實現,所以我特別使用'javascript'(當我指ES時)。至於你的評論,你是對的,這就是爲什麼我指出SO上的一個很好的答案。但是*謝謝*關心! – GitaarLAB
替換{}的有[]的。 – Matt
您可以像其他數組一樣聲明該數組:'var array2d = [];' –