es6中陣列的擴充套件

2021-09-26 04:24:28 字數 3663 閱讀 4759

一、擴充套件運算子(…[ ])的應用

1.轉成引數序列

2.複製陣列

const a1 =[1

,2];

const a2 = a1.

concat()

;//es5

const a3 =

[...a1]

;//es6

const

[...a4]

= a1;

3.合併陣列[...arr1, ...arr2, ...arr3](淺拷貝)

4.解構賦值const [first, ...rest] = [1, 2, 3, 4, 5]

5.正確返回字元長度[...str].length

'x\ud83d\ude80y'

.length // 4

[...

'x\ud83d\ude80y'

].length // 3

6.實現 iterator 介面的物件

任何iterator介面的物件,都可以用擴充套件運算子轉為真正的陣列。

對於那些沒有部署iterator介面的類似陣列的物件,使用array.from(arraylike),實際上任何有length屬性的物件,都可以通過array.from方法轉為陣列。

二、array.from()

1.用於將兩類物件轉為真正的陣列:類似陣列的物件和可遍歷的物件(包括 es6 新增的資料結構setmap)。

2.array.from還可以接受第二個引數,作用類似於陣列的map方法,用來對每個元素進行處理,將處理後的值放入返回的陣列。

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.of()

用於將一組值,轉換為陣列。這個方法的主要目的,是彌補陣列建構函式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()方法還可以接受第二個和第三個引數,用於指定填充的起始位置和結束位置。

[

'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]]

六、陣列例項的 entries(),keys() 和 values()

for...of迴圈進行遍歷,keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷。

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()

表示某個陣列是否包含給定的值(第二個引數表示搜尋的起始位置),與字串的includes()方法類似。

[1,

2,3]

.includes(3

,3)// false[1

,2,3

].includes(3

,-1)

// true[1

,2,[

3]].

includes([

3])// false

[nan].

includes

(nan

)// true

八、陣列例項的 flat(),flatmap()

1.flat()用於將巢狀的陣列「拉平」,變成一維的陣列。引數:想要拉平的層數,預設為1。

[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]

2.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 寫法二 ...