JavaScript如何生成二維數(shù)組
JavaScript生成二維數(shù)組
方法一
new Array(x).fill(new Array(y).fill(0))
但注意,當一個對象被傳遞給fill方法時,填充數(shù)組的是這個對象的引用。
即二維數(shù)組的第一個維度中的每一個數(shù)組都指向同一個引用,如果向第一個維度中的任一元素執(zhí)行push,則每一個二維中都會多一個元素。
方法二
new Array(x).fill().map(() => new Array(y).fill(0))
方法三
Array.from(new Array(x), () => new Array(y).fill(0))
測試代碼:
const arr1 = new Array(2).fill(new Array(3).fill(0)) // arr1: [ [ 0, 0, 0 ], [ 0, 0, 0 ] ] arr1[0].push(9) // arr1: [ [ 0, 0, 0, 9 ], [ 0, 0, 0, 9 ] ] const arr2 = new Array(2).fill().map(() => new Array(3).fill(0)) // arr2: [ [ 0, 0, 0 ], [ 0, 0, 0 ] ] arr2[0].push(9) // arr2: [ [ 0, 0, 0, 9 ], [ 0, 0, 0 ] ] const arr3 = Array.from(new Array(2), () => new Array(3).fill(0)) // arr3: [ [ 0, 0, 0 ], [ 0, 0, 0 ] ] arr3[0].push(9) // arr3: [ [ 0, 0, 0, 9 ], [ 0, 0, 0 ] ]
JS中創(chuàng)建二維數(shù)組的坑
JS中二維數(shù)組的創(chuàng)建
首先JavaScript只支持 一維數(shù)組 ,但我們可以通過一些方法實現(xiàn)矩陣以及多維數(shù)組
其中普通的創(chuàng)建方法并不會出現(xiàn)什么問題:
(1) 利用一維數(shù)組嵌套一維數(shù)組的方式創(chuàng)建二維數(shù)組:
let arr = [] ; a[0] = [1,2,3,4,5,6]; a[1] = [10,20,30,40,50,60]
然后使用一個 雙層for循環(huán) 就可以迭代這個二維數(shù)組中的元素
所以用這種方法創(chuàng)建多維數(shù)組,不管有幾個維度,都可以通過嵌套循環(huán)來遍歷
遇到問題的方法:
let arr1= new Array(10).fill(new Array(10).fill(0))
控制臺打印arr1
:
這時候,若你想設置,arr[0][0] = 1
,你會發(fā)現(xiàn)二維數(shù)組所有子數(shù)組的第一項都被改為1
原因
綜上,還是選擇老實一點的創(chuàng)建方法:
var a = new Array(); for(var i=0;i<5;i++){ //一維長度為5 a[i] = new Array(); for(var j=0;j<5;j++){ //二維長度為5 a[i][j] = 0; } }
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
原生JS實現(xiàn)網(wǎng)頁手機音樂播放器 歌詞同步播放的示例
下面小編就為大家分享一篇原生JS實現(xiàn)網(wǎng)頁手機音樂播放器 歌詞同步播放的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02javascript(js) join函數(shù)使用方法介紹
javascript(js) join函數(shù)使用方法介紹...2007-11-11