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



