一、擴充套件運算子(…[ ])的應用
1.轉成引數序列
2.複製陣列
3.合併陣列const a1 =[1
,2];
const a2 = a1.
concat()
;//es5
const a3 =
[...a1]
;//es6
const
[...a4]
= a1;
[...arr1, ...arr2, ...arr3]
(淺拷貝)
4.解構賦值const [first, ...rest] = [1, 2, 3, 4, 5]
5.正確返回字元長度[...str].length
6.實現 iterator 介面的物件'x\ud83d\ude80y'
.length // 4
[...
'x\ud83d\ude80y'
].length // 3
任何iterator
介面的物件,都可以用擴充套件運算子轉為真正的陣列。
對於那些沒有部署iterator
介面的類似陣列的物件,使用array.from(arraylike)
,實際上任何有length屬性的物件,都可以通過array.from
方法轉為陣列。
二、array.from()
1.用於將兩類物件轉為真正的陣列:類似陣列的物件和可遍歷的物件(包括 es6 新增的資料結構set
和map
)。
2.array.from
還可以接受第二個引數,作用類似於陣列的map方法,用來對每個元素進行處理,將處理後的值放入返回的陣列。
三、array.of()array.
from
(arraylike, x => x * x)
;// 等同於
array.
from
(arraylike)
.map
(x => x * x)
;array.
from([
1,2,
3],(x)
=> x * x)
// [1, 4, 9]
用於將一組值,轉換為陣列。這個方法的主要目的,是彌補陣列建構函式array()
的不足。因為引數個數的不同,會導致array()
的行為有差異。
array()
// array(3
)// [, , ,]
array(3
,11,8
)// [3, 11, 8]
array.of
總是返回引數值組成的陣列。如果沒有引數,就返回乙個空陣列。
四、陣列例項的 copywithin()
將指定位置的成員複製到其他位置(會覆蓋原有成員),然後返回當前陣列。
array.prototype.copywithin(target, start = 0, end = this.length)
五、陣列例項的 fill()
1.可用於填充陣列,陣列中已有的元素,會被全部抹去。
2.fill()
方法還可以接受第二個和第三個引數,用於指定填充的起始位置和結束位置。
六、陣列例項的 entries(),keys() 和 values()[
'a',
'b',
'c',
'd']
.fill(7
,1,3
)// ['a', 7, 7, 'd']
// 注意,如果填充的型別為物件,那麼被賦值的是同乙個記憶體位址的物件,而不是深拷貝物件。
let arr =
newarray(3
).fill([
]);arr[0]
.push(5
);// arr = [[5], [5], [5]]
用for...of
迴圈進行遍歷,keys()
是對鍵名的遍歷、values()
是對鍵值的遍歷,entries()
是對鍵值對的遍歷。
七、陣列例項的 includes()for
(let index of
['a'
,'b'].
keys()
)// 0
// 1
for(
let elem of
['a'
,'b'].
values()
)// 'a'
// 'b'
for(
let[index, elem]of[
'a',
'b']
.entries()
)1// 0 "a"
// 1 "b"
表示某個陣列是否包含給定的值(第二個引數表示搜尋的起始位置),與字串的includes()
方法類似。
八、陣列例項的 flat(),flatmap()[1,
2,3]
.includes(3
,3)// false[1
,2,3
].includes(3
,-1)
// true[1
,2,[
3]].
includes([
3])// false
[nan].
includes
(nan
)// true
1.flat()
用於將巢狀的陣列「拉平」,變成一維的陣列。引數:想要拉平的層數,預設為1。
2.[1,
2,[3
,[4,
5]]]
.flat()
// [1, 2, 3, [4, 5]]
//如果原陣列有空位,flat()方法會跳過空位。[1
,2,,
4,5]
.flat()
// [1, 2, 4, 5][1
,[2,
[3]]
].flat
(infinity
)//infinity:不管有多少層巢狀,都要轉成一維陣列
// [1, 2, 3]
flatmap()
方法對原陣列的每個成員執行乙個函式,然後對返回值組成的陣列執行flat()
方法。該方法返回乙個新陣列,不改變原陣列。傳入函式(類似map
),只能展開一層
九、陣列的空位的處理
1.es5:
2.es6:
明確將空位轉為undefined
[
...[
'a',
,'b']]
// [ "a", undefined, "b" ]
Es6陣列擴充套件
示例 es5和es6的擴充套件運算子區別 let arr 1,2,3 function add a,b,c es5 es6 add arr 6 複製陣列 let arr 1,2,3 es5 let arr3 arr.concat 4 es6 let arr3 arr,4 console.log ar...
ES6陣列擴充套件
陣列建構函式的靜態方法。靜態方法 把函式當物件處理 key對應的value是函式 我們就說這個方法是靜態方法 否則就是靜態屬性 array.f 1 console.log array.f 靜態屬性 array.fn function array.fn 靜態方法array.from方法用於將兩類物件轉...
ES6 陣列的擴充套件
擴充套件運算子 spread 是三個點 它好比 rest 引數的逆運算,將乙個陣列轉為用逗號分隔的引數序列。console.log 1,2,3 console.log 1,2,3 console.log 1,2,3,4 5 轉殖陣列 const a1 1,2 寫法一 const a2 a1 寫法二 ...