1. 程式人生 > >ES6知識點整理之----數組擴展----API新增

ES6知識點整理之----數組擴展----API新增

方法的參數 style 空字符 布爾值 當前 來替 三個參數 返回 整理

Array.from()

用於將兩類對象轉為真正的數組:類似數組的對象(array-like object)和可遍歷(iterable)的對象(包括 ES6 新增的數據結構 Set 和 Map)。

只要是部署了 Iterator 接口的數據結構,Array.from都能將其轉為數組。

任何有length屬性的對象,都可以通過Array.from方法轉為數組,而擴展運算符就無法轉換。

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

如果map函數裏面用到了this關鍵字,還可以傳入Array.from的第三個參數,用來綁定this

Array.of()

用於將一組值,轉換為數組。

Array.of基本上可以用來替代Array()new Array(),並且不存在由於參數不同而導致的重載。它的行為非常統一。

Array.of總是返回參數值組成的數組。如果沒有參數,就返回一個空數組。

數組實例的 copyWithin()

在當前數組內部,將指定位置的成員復制到其他位置(會覆蓋原有成員),然後返回當前數組。也就是說,使用這個方法,會修改當前數組。

它接受三個參數。

  • target(必需):從該位置開始替換數據。如果為負值,表示倒數。
  • start(可選):從該位置開始讀取數據,默認為 0。如果為負值,表示倒數。
  • end(可選):到該位置前停止讀取數據,默認等於數組長度。如果為負值,表示倒數。

數組實例的 find()

用於找出第一個符合條件的數組成員。它的參數是一個回調函數,所有數組成員依次執行該回調函數,直到找出第一個返回值為true的成員,然後返回該成員。如果沒有符合條件的成員,則返回undefined

回調函數可以接受三個參數,依次為當前的值、當前的位置和原數組。

可以接受第二個參數,用來綁定回調函數的this對象。

此方法可以發現NaN,彌補了數組的indexOf方法的不足。

數組實例的findIndex()

find方法非常類似,返回第一個符合條件的數組成員的位置,如果所有成員都不符合條件,則返回-1

可以接受第二個參數,用來綁定回調函數的this對象。

此方法可以發現NaN

,彌補了數組的indexOf方法的不足。

數組實例的 fill()

使用給定值,填充一個數組。

fill方法還可以接受第二個和第三個參數,用於指定填充的起始位置和結束位置。

數組實例的 entries(),keys() 和 values()

用於遍歷數組。它們都返回一個遍歷器對象(詳見《Iterator》一章),可以用for...of循環進行遍歷,唯一的區別是keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷。

數組實例的 includes()

Array.prototype.includes方法返回一個布爾值,表示某個數組是否包含給定的值,與字符串的includes方法類似。

該方法的第二個參數表示搜索的起始位置,默認為0。如果第二個參數為負數,則表示倒數的位置,如果這時它大於數組長度(比如第二個參數為-4,但數組長度為3),則會重置為從0開始。

另外,Map 和 Set 數據結構有一個has方法,需要註意與includes區分。

  • Map 結構的has方法,是用來查找鍵名的,比如Map.prototype.has(key)WeakMap.prototype.has(key)Reflect.has(target, propertyKey)
  • Set 結構的has方法,是用來查找值的,比如Set.prototype.has(value)WeakSet.prototype.has(value)

數組實例的 flat(),flatMap()

Array.prototype.flat()用於將嵌套的數組“拉平”,變成一維的數組。該方法返回一個新數組,對原數據沒有影響。

flat()默認只會“拉平”一層,如果想要“拉平”多層的嵌套數組,可以將flat()方法的參數寫成一個整數,表示想要拉平的層數,默認為1。

如果不管有多少層嵌套,都要轉成一維數組,可以用Infinity關鍵字作為參數。

flatMap()方法對原數組的每個成員執行一個函數(相當於執行Array.prototype.map()),然後對返回值組成的數組執行flat()方法。該方法返回一個新數組,不改變原數組。

flatMap()只能展開一層數組。

flatMap()方法的參數是一個遍歷函數,該函數可以接受三個參數,分別是當前數組成員、當前數組成員的位置(從零開始)、原數組。

flatMap()方法還可以有第二個參數,用來綁定遍歷函數裏面的this

數組的空位

空位不是undefined,一個位置的值等於undefined,依然是有值的。空位是沒有任何值。

ES5 對空位的處理,已經很不一致了,大多數情況下會忽略空位。

  • forEach(), filter(), reduce(), every()some()都會跳過空位。
  • map()會跳過空位,但會保留這個值
  • join()toString()會將空位視為undefined,而undefinednull會被處理成空字符串。

ES6 則是明確將空位轉為undefined

ES6知識點整理之----數組擴展----API新增