關於 JavaScript 二維數組和多維數組的定義聲明
阿新 • • 發佈:2018-03-28
一起 關於 多維 可能 mmm 需要 down 定義 發生
之前在寫掃雷的時候,因為需要用到二維數組,出現了問題,所以記錄一下。
當我們在需要使用多維數組的時候,一定要使用正確的聲明,不然就會出行令人頭大的問題:
// 正確的聲明
var arr = []
arr[0] = []
arr[1] = []
arr[2] = []
// 或者
arr[0] = [0, 0, 0]
arr[1] = [0, 0, 0]
arr[2] = [0, 0, 0]
演示一下錯誤的聲明:
// 錯誤的聲明
var arr = []
var arr2 = [0, 0, 0]
arr[0] = arr2
arr[1] = arr2
arr[2] = arr2
// 這個時候我們改變 arr[0][0]
arr[0][0] = 1
// 然後我們 log 數組試一下
console.log(arr)
/*
[1, 0, 0]
[1, 0, 0]
[1, 0, 0]
發現了沒,arr[0][0]、arr[1][0]、arr[2][0] 都一起發生了變化
只是修改了 arr[0][0],但是其他的數組居然也發生了變化
*/
這樣的聲明會發生錯誤,這裏是挺鬼畜的,因為按照我個人的理解,arr[i] 應該是復制了 arr2 的內容,但是從這個結果來看,很顯然不是這個樣子的。
所以在使用多維數組的時候一定不要犯這樣的低級錯誤(可能只有我這麽水的才會犯吧,emmm)。
關於 JavaScript 二維數組和多維數組的定義聲明