#es6數組的擴展
------------恢復內容開始------------
# 1、Array.from() 法用于將兩類對象轉為真正的數組:類似數組的對象(array-like object)和可遍歷(iterable)的對象(包括 ES6 新增的數據結構 Set 和 Map)。 類似數組轉成真正的數組 `let arrayLike = { '0':'a'; 1':'b'; '2':'c'; length } let arr2 = Array.from(arrayLike)//['a','b','c']
`
上面代碼中,字符串和 Set 結構都具有 Iterator 接口,因此可以被Array.from轉為真正的數組。
如果參數是一個真正的數組,Array.from會返回一個一模一樣的新數組。

擴展運算符背后調用的是遍歷器接口(Symbol.iterator),如果一個對象沒有部署這個接口,就無法轉換。Array.from方法還支持類似數組的對象。所謂類似數組的對象,本質特征只有一點,即必須有length屬性。因此,任何有length屬性的對象,都可以通過Array.from方法轉為數組,而此時擴展運算符就無法轉換。
對于還沒有部署該方法的瀏覽器,可以用Array.prototype.slice方法替代。

2、Array.of()
用于將一數值,轉換為數組

這個方法的主要目的,是彌補數組構造函數Array()的不足。因為參數個數的不同,會導致Array()的行為有差異。

上面代碼中,Array()方法沒有參數、一個參數、三個參數時,返回的結果都不一樣。只有當參數個數不少于 2 個時,Array()才會返回由參數組成的新數組。參數只有一個正整數時,實際上是指定數組的長度。
而Array.of()基本上可以用來替代Array()或new Array(),并且不存在由于參數不同而導致的重載。它的行為非常統一。
3、數組實例copyWithin()
數組實例的copyWithin()方法,在當前數組內部,將指定位置的成員復制到其他位置(會覆蓋原有成員),然后返回當前數組。也就是說,使用這個方法,會修改當前數組。
target(必需):從該位置開始替換數據。如果為負值,表示倒數。
start(可選):從該位置開始讀取數據,默認為 0。如果為負值,表示從末尾開始計算。
end(可選):到該位置前停止讀取數據,默認等于數組長度。如果為負值,表示從末尾開始計算。
Array.prototype.copyWithin(target,start=0,end=this target)

4、數組實例find()和findIndex()
find()用于找出第一個符合條件的數組成員,它的參數是一個回調函數


上面代碼中,find方法的回調函數可以接受三個參數,依次為當前的值、當前的位置和原數組。
findIndex()
與find()方法類似,返回第一個符合條件的數組成員的位置,如果所有成員都不符合條件,則返回-1。

上面的代碼中,find函數接收了第二個參數person對象,回調函數中的this對象指向person對象。
5、數組實例fill()
給定值,填充一個數組

上面代碼表明,fill方法用于空數組的初始化非常方便。數組中已有的元素,會被全部抹去。
6、數組實例的entries(),keys(),values()用于遍歷數組=for...of
唯一的區別是keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷。

7、數組實例includes()
判斷數組里是否存在參數,返回布爾值;
參數1數組內的內容;參數二數組索引值


注: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)。
8、數組實例的flat();flatMap()
用于將嵌套的數組“拉平”,變成一維的數組。該方法返回一個新數組,對原數據沒有影響。

flat()默認只會“拉平”一層,如果想要“拉平”多層的嵌套數組,可以將flat()方法的參數寫成一個整數,表示想要拉平的層數,默認為1。
參數改為2則拉平2層,如果數組有空位會直接跳過空位

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

浙公網安備 33010602011771號