Array 陣列扁平(ES10)

2021-10-07 13:22:21 字數 1655 閱讀 9765

flat() 方法會按照乙個可指定的深度遞迴遍歷陣列,並將所有元素與遍歷到的子陣列中的元素合併為乙個新陣列返回。

語法

const newarray = arr.

flat

(depth)

解釋

引數 含義 必選

depth 指定要提取巢狀陣列的結構深度,預設值為 1 n

示例

const numbers =[1

,2,[

3,4,

[5,6

]]]console.

log(numbers.

flat()

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

注意

此時 flat 的引數沒有設定,取預設值 1,也就是說只扁平化向下一級,遇到 [3, 4, [5, 6]] 這個陣列會扁平會處理,不會再繼續遍歷內部的元素是否還有陣列

const numbers =[1

,2,[

3,4,

[5,6

]]]console.

log(numbers.

flat(2

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

當 flat 的引數大於等於 2,返回值就是 [1, 2, 3, 4, 5, 6] 了。

flatmap() 方法首先使用對映函式對映每個元素,然後將結果壓縮成乙個新陣列。從方法的名字上也可以看出來它包含兩部分功能乙個是 map,乙個是 flat(深度為1)。

語法

const new_array = arr.

flatmap

(function

callback

(currentvalue[

, index[

, array]])

[, thisarg])

解釋

引數 含義 必選

callback 可以生成乙個新陣列中的元素的函式,可以傳入三個引數:currentvalue、index、array y

thisarg 遍歷函式 this 的指向 n

示例

const numbers =[1

,2,3

]numbers.

map(x =>

[x *2]

)// [[2], [4], [6]]

numbers.

flatmap

(x =>

[x *2]

)// [2, 4, 6]

這個示例可以簡單對比下 map 和 flatmap 的區別。當然還可以看下下面的示例:

let arr =

['今天天氣不錯',''

,'早上好'

]arr.

map(s => s.

split(''

))// [["今", "天", "天", "氣", "不", "錯"],[""],["早", "上", "好"]]

arr.

flatmap

(s => s.

split(''

))// ["今", "天", "天", "氣", "不", "錯", "", "早", "上", "好"]

陣列扁平化

原陣列 const arr 1,2,3,4 5,6,7,8 9 希望輸出 1,2,3,4,5,6,7,8,9 方法一 遞迴 function arrdelayering arr else return newarr let newarr arrdelayering arr 1,2,3,4,5,6,7...

陣列扁平化

今天看到了陣列扁平化處理,猶記得之前面試被問到過,下面介紹一下陣列扁平化處理的幾種形式 題目要求 將陣列 arr 1,2,3,4,5,6,7,8,9 轉化為 1,2,3,4,5,6,7,8,9 1 遞迴 var arr 1,2,3,4,5,6,7,8,9 方法一 遞迴 function flatfu...

扁平化陣列

第一次遇到陣列扁平化已經是在3k遊戲的筆試題裡,當時是用了遞迴的方法。因為對一些陣列方法,字串方法十分的不熟練 扁平化陣列的核心都是,遍歷陣列元素,遇到陣列就拆,不是陣列就加進去。var arr 1,2,3,4,5 console.log bianpinghua arr tostring split...