一般來(lái)說(shuō),JavaScript中的數(shù)組是稀疏的眼坏。
什么是稀疏呢拂玻?稀疏也就是說(shuō),數(shù)組中的元素之間可以有空隙空骚,因?yàn)橐粋€(gè)數(shù)組其實(shí)就是一個(gè)鍵值映射纺讲。
1、稀疏數(shù)組
首先來(lái)創(chuàng)建一個(gè)稀疏數(shù)組看看長(zhǎng)什么樣
var arr = Array(3)
console.log(arr) //[empty × 3]
上面的代碼創(chuàng)建了一個(gè)長(zhǎng)度為3的數(shù)組囤屹,但是當(dāng)我們遍歷的時(shí)候會(huì)發(fā)現(xiàn)熬甚,他并沒(méi)有元素,所以js會(huì)默認(rèn)跳過(guò)這些元素肋坚。這就是稀疏數(shù)組乡括。
還可以以這種形式創(chuàng)建稀疏數(shù)據(jù)
var arr = []
arr[0] = 1
arr[100] = 2
console.log(arr) //[1, empty × 99, 2]
雖然數(shù)組的長(zhǎng)度為101,但是實(shí)際元素只有兩個(gè)智厌,這也是一種稀疏數(shù)組诲泌。
2、密集數(shù)組
創(chuàng)建一個(gè)密集數(shù)組試試看
var arr = Array.apply(null, Array(3));
console.log(arr) //[undefined, undefined, undefined]
解析:Array.apply(null, Array(3))
Array(3) 相當(dāng)于var arr = new Array(3);
Array.apply(null,arr);相當(dāng)于new Array(arr[0],arr[1],arr[2]);
arr雖然長(zhǎng)度為3铣鹏,但卻是一個(gè)稀疏數(shù)組敷扫,拿到的值都是undefind
你現(xiàn)在可以看到數(shù)組里面有真實(shí)元素了,雖然元素的值是undefined诚卸,但是你可以遍歷到這些數(shù)組元素了葵第,還可以為每個(gè)元素重新賦值。