陣列的擴充套件 ES6學習筆記

2021-10-01 09:51:33 字數 1949 閱讀 7541

2.array.from()

3.array.of()

4.陣列例項的find()和findindex()

5.陣列例項的fill()

6.陣列例項的entries(),keys(),和values()

7.陣列例項的includes()

含義:擴充套件運算子是三個點(…),用於將乙個陣列轉為用逗號分隔的引數序列,主要用於函式呼叫。

function

demo

(x,y)

let arr =[3

,4];

demo

(...arr)

;//7

上面例子中,擴充套件運算子將arr陣列轉換為引數序列,並執行demo函式。

1.1擴充套件運算子的應用

1.複製陣列

由於陣列是復合資料型別,直接複製,只是複製了陣列的位址(指標),並不是轉殖乙個全新的陣列。

let arr1 =[1

,2,3

];let arr2 = arr1;

//只是複製了arr1陣列的指標

arr2[0]

=100

; console.

log(arr1)

;//array(3) [ 100, 2, 3 ]

如果要轉殖乙個陣列,可以採用下面的**:

//es5實現:

var a =[1

,2,3

,4];

var b = a.

concat()

;//es6實現:

let arr1 =[1

,2,3

];let arr2 =

[...arr1]

;//使用擴充套件運算子轉殖乙個陣列

2.合併陣列

var a1 =

["a"

,"b"

,"c"];

var a2 =

["d"

,"e"];

var a3 =

["f"];

//es5實現:

a1.concat

(a2,a3)

;//es6實現:

[...a1,

...a2,

...a3]

;

3.實現了 iterator 介面的物件

任何定義了遍歷器(iterator)介面的物件,都可以用擴充套件運算子轉為真正的陣列。相反,如果乙個物件沒有定義遍歷器(iterator)介面,就不能使用擴充套件運算子將其轉換為陣列。

let nodelist = document.

queryselectorall

('div');

let array =

[...nodelist]

;

上面例子中,queryselectorall方法返回的是乙個nodelist物件。它不是陣列,而是乙個類似陣列的物件。這時,擴充套件運算子可以將其轉為真正的陣列,原因就在於nodelist物件實現了 iterator 。

注意:對於沒有定義iterator的物件,擴充套件運算子不能將其轉換為陣列。

let obj =

[...obj]

;//typeerror: obj is not iterable

上面例子中,obj沒有定義iterator,所以不能使用擴充套件運算子將其轉換為陣列。這時可以使用array.from()方法將其轉換為陣列。

es6學習筆記(三)陣列的擴充套件

一 擴充套件運算子 2,3,4,5 console.log 1,2,3,4,5 5 列印出來的結果是1,2,3,4,5,5 es5 function f x,y,z var args 1,2,3 陣列不能作為引數 es6 function f x,y,z var args 1,2,3 f args ...

ES6學習筆記之陣列的擴充套件

擴充套件運算子 spread 是三個點 將乙個陣列轉為用逗號分隔的引數序列。console.log 1,2,3 1 2 3const arr1 1,2,3,4,5 const arr2 arr1 arr2 0 666 console.log arr2 arr2 666,2,3,4,5 console...

ES6學習筆記 陣列的擴充套件

1 array.from 應用兩類 類似於陣列的物件和可遍歷的的物件 包含map和set 只有轉換成真正的陣列,才可使用陣列的方法。模擬 擴充套件運算子也可以使某些物件變成陣列 2 array.of 主要彌補陣列建構函式array 的不足,引數的個數的不同,會導致array 的差異 沒有引數,表示建...