JavaScript如何生成二維數(shù)組
JavaScript生成二維數(shù)組
方法一
new Array(x).fill(new Array(y).fill(0))
但注意,當(dāng)一個(gè)對(duì)象被傳遞給fill方法時(shí),填充數(shù)組的是這個(gè)對(duì)象的引用。
即二維數(shù)組的第一個(gè)維度中的每一個(gè)數(shù)組都指向同一個(gè)引用,如果向第一個(gè)維度中的任一元素執(zhí)行push,則每一個(gè)二維中都會(huì)多一個(gè)元素。
方法二
new Array(x).fill().map(() => new Array(y).fill(0))
方法三
Array.from(new Array(x), () => new Array(y).fill(0))
測(cè)試代碼:
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ù)組 ,但我們可以通過(guò)一些方法實(shí)現(xiàn)矩陣以及多維數(shù)組
其中普通的創(chuàng)建方法并不會(huì)出現(xiàn)什么問(wè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]
然后使用一個(gè) 雙層for循環(huán) 就可以迭代這個(gè)二維數(shù)組中的元素
所以用這種方法創(chuàng)建多維數(shù)組,不管有幾個(gè)維度,都可以通過(guò)嵌套循環(huán)來(lái)遍歷
遇到問(wèn)題的方法:
let arr1= new Array(10).fill(new Array(10).fill(0))
控制臺(tái)打印arr1
:
這時(shí)候,若你想設(shè)置,arr[0][0] = 1
,你會(huì)發(fā)現(xiàn)二維數(shù)組所有子數(shù)組的第一項(xiàng)都被改為1
原因
綜上,還是選擇老實(shí)一點(diǎn)的創(chuàng)建方法:
var a = new Array(); for(var i=0;i<5;i++){ //一維長(zhǎng)度為5 a[i] = new Array(); for(var j=0;j<5;j++){ //二維長(zhǎng)度為5 a[i][j] = 0; } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承
下面小編就為大家?guī)?lái)一篇淺談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08tangram.js庫(kù)實(shí)現(xiàn)js類的方式實(shí)例分析
這篇文章主要介紹了tangram.js庫(kù)實(shí)現(xiàn)js類的方式,結(jié)合實(shí)例形式分析了tangram.js庫(kù)實(shí)現(xiàn)類的創(chuàng)建、繼承等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01bootstrap table列和表頭對(duì)不齊的解決方法
這篇文章主要為大家詳細(xì)介紹了bootstrap table列和表頭對(duì)不齊的解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07原生JS實(shí)現(xiàn)網(wǎng)頁(yè)手機(jī)音樂(lè)播放器 歌詞同步播放的示例
下面小編就為大家分享一篇原生JS實(shí)現(xiàn)網(wǎng)頁(yè)手機(jī)音樂(lè)播放器 歌詞同步播放的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02javascript(js) join函數(shù)使用方法介紹
javascript(js) join函數(shù)使用方法介紹...2007-11-11跟我學(xué)習(xí)javascript的定時(shí)器
跟我學(xué)習(xí)javascript的定時(shí)器,告訴大家具體的使用方法,并向大家提出了一個(gè)消息要求,制作一個(gè)定時(shí)器,有沒(méi)有朋友感興趣,挑戰(zhàn)一下2015-11-11