es6中陣列的flat 和flatMap

2022-07-02 23:09:14 字數 732 閱讀 4299

今天看到一道題,把乙個巢狀的陣列扁平化於是想到es6有這麼一段操作

array.prototype.flat()用於將巢狀的陣列「拉平」,變成一維陣列。該方法返回乙個新陣列,對原資料沒有影響

而且flat()預設只會「拉平」一層,如果要處理多層的巢狀陣列,可以將flat()方法的引數寫成乙個整數

[1, 2, [3, [4, 5]]].flat()

//[1, 2, 3, [4, 5]]

[1, 2, [3, [4, 5]]].flat(2)

//[1, 2, 3, 4, 5]

如果是不管多少層巢狀,都要轉成一維陣列,可以用infinity關鍵字作為引數,如果有空位,flat()會跳過

[1, [2, [3]]].flat(infinity)

//[1, 2, 3]

[1, 2, , 4, 5].flat()

//[1, 2, 4, 5]

flatmap()方法對原陣列的每個成員執行乙個函式,相當於執行array.prototype.map(),然後對返回值組成的陣列執行flat()方法。返回乙個新陣列,不改變原陣列。flatmap()只能展開一層陣列

//

相當於 [[2, 4], [3, 6], [4, 8]].flat()

[2, 3, 4].flatmap((x) => [x, x * 2])

//[2, 4, 3, 6, 4, 8]

ES6 陣列和物件

先列乙個要學習內容的大綱,慢慢補齊。es5 中新增的方法 forwhile arr.foreach 迴圈遍歷陣列中的每一位 arr.map 迴圈遍歷陣列中的每一位,並返回乙個新陣列 arr.filter 迴圈遍歷陣列中的每一位,並過濾一些不合要求的元素。arr.some 查詢陣列中符合條件的元素,返...

es6陣列中的遍歷

我經常會運算元組,而且避免不了對每乙個欄位的操作,這樣就會用到遍歷,遍歷有好多種,今天我歸納一下經常會用到的幾個 1 foreach是乙個我們經常用的乙個 var name 張三 李四 王五 name.foreach function v,k 注意 jquery中each方法是反的,比如 name ...

es6中陣列的擴充套件

一 擴充套件運算子 的應用 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...