JavaScript數(shù)組初始化的那些事兒
點(diǎn)擊上方 Java學(xué)習(xí)之道,選擇 設(shè)為星標(biāo)
Part1不用for循環(huán)實(shí)現(xiàn)
1fill()
fill() 方法用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素。不包括終止索引。
const?array?=?Array(10).fill();
????
//?[undefined,?undefined,?undefined,?undefined,?undefined]
語(yǔ)法
arr.fill(value[, start[, end]])
value用來(lái)填充數(shù)組元素的值。 start可選起始索引,默認(rèn)值為0。 end可選終止索引,默認(rèn)值為 this.length。
實(shí)例
???[1,?2,?3].fill(4);???????????????//?[4,?4,?4]
???[1,?2,?3].fill(4,?1);????????????//?[1,?4,?4]
???[1,?2,?3].fill(4,?1,?2);?????????//?[1,?4,?3]
???[1,?2,?3].fill(4,?1,?1);?????????//?[1,?2,?3]
???[1,?2,?3].fill(4,?3,?3);?????????//?[1,?2,?3]
???[1,?2,?3].fill(4,?-3,?-2);???????//?[4,?2,?3]
???[1,?2,?3].fill(4,?NaN,?NaN);?????//?[1,?2,?3]
???[1,?2,?3].fill(4,?3,?5);?????????//?[1,?2,?3]
???Array(3).fill(4);????????????????//?[4,?4,?4]
???[].fill.call({?length:?3?},?4);??//?{0:?4,?1:?4,?2:?4,?length:?3}
???//?Objects?by?reference.
???var?arr?=?Array(3).fill({})?//?[{},?{},?{}];
???//?需要注意如果fill的參數(shù)為引用類型,會(huì)導(dǎo)致都執(zhí)行都一個(gè)引用類型
???//?如?arr[0]?===?arr[1]?為true
???arr[0].hi?=?"hi";?//?[{?hi:?"hi"?},?{?hi:?"hi"?},?{?hi:?"hi"?}]
2Array.from()
Array.from() 方法對(duì)一個(gè)類似數(shù)組或可迭代對(duì)象創(chuàng)建一個(gè)新的,淺拷貝的數(shù)組實(shí)例。
????Array.from({length:?5})
????//?[undefined,?undefined,?undefined,?undefined,?undefined]
????
????Array.from(Array(5))
????//?[undefined,?undefined,?undefined,?undefined,?undefined]
語(yǔ)法
Array.from(arrayLike[, mapFn[, thisArg]])
arrayLike想要轉(zhuǎn)換成數(shù)組的偽數(shù)組對(duì)象或可迭代對(duì)象。 mapFn可選如果指定了該參數(shù),新數(shù)組中的每個(gè)元素會(huì)執(zhí)行該回調(diào)函數(shù)。 thisArg可選可選參數(shù),執(zhí)行回調(diào)函數(shù) mapFn時(shí)this對(duì)象。
Array.from() 可以通過(guò)以下方式來(lái)創(chuàng)建數(shù)組對(duì)象:
偽數(shù)組對(duì)象(擁有一個(gè) length屬性和若干索引屬性的任意對(duì)象)可迭代對(duì)象(可以獲取對(duì)象中的元素,如 Map和 Set 等
實(shí)例
從 String 生成數(shù)組
Array.from('foo');
//?[?"f",?"o",?"o"?]
從 Set 生成數(shù)組
const?set?=?new?Set(['foo',?'bar',?'baz',?'foo']);
Array.from(set);
//?[?"foo",?"bar",?"baz"?]
從 Map 生成數(shù)組
const?map?=?new?Map([[1,?2],?[2,?4],?[4,?8]]);
Array.from(map);
//?[[1,?2],?[2,?4],?[4,?8]]
const?mapper?=?new?Map([['1',?'a'],?['2',?'b']]);
Array.from(mapper.values());
//?['a',?'b'];
Array.from(mapper.keys());
//?['1',?'2'];
在 Array.from 中使用箭頭函數(shù)
Array.from([1,?2,?3],?x?=>?x?+?x);
//?[2,?4,?6]
Array.from({length:?5},?(v,?i)?=>?i);
//?[0,?1,?2,?3,?4]
3Array.keys()
keys()方法返回一個(gè)包含數(shù)組中每個(gè)索引鍵的Array Iterator對(duì)象。
const?array?=?[...Array(5).keys()];
?//?[0,?1,?2,?3,?4]
?const?array?=?Array.from(Array(5).keys());
?//?[0,?1,?2,?3,?4]
語(yǔ)法
arr.keys()
實(shí)例
索引迭代器會(huì)包含那些沒有對(duì)應(yīng)元素的索引
var?arr?=?["a",?,?"c"];
var?sparseKeys?=?Object.keys(arr);
var?denseKeys?=?[...arr.keys()];
console.log(sparseKeys);?//?['0',?'2']
console.log(denseKeys);??//?[0,?1,?2]
4toString() + split()
toString()返回一個(gè)字符串,表示指定的數(shù)組及其元素。
const?array?=?Array(5).toString().split(',');
//?['',?'',?'',?'',?'']
語(yǔ)法
arr.toString()
-?
?| 更多精彩文章 -
▽加我微信,交個(gè)朋友 長(zhǎng)按/掃碼添加↑↑↑
評(píng)論
圖片
表情



