陣列的flat方法

2022-07-10 10:15:13 字數 1057 閱讀 8734

封裝排序方法,asc:公升序 desc:降序

let lessons = [, , , ]

function order(field, type = "asc")

}let hd = lessons.sort(order('a', 'desc'))

flat方法

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

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

// [1, 2, 3, 4]

flat()預設只會「拉平」一層,如果想要「拉平」多層的巢狀陣列,可以將flat()方法的引數寫成乙個整數,表示想要拉平的層數,預設為1。

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

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

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

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

如果不管有多少層巢狀,都要轉成一維陣列,可以用infinity關鍵字作為引數。

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

// [1, 2, 3]

如果原陣列有空位,flat()方法會跳過空位。

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

// [1, 2, 4, 5]

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

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

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

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

**

js中flat方法的實現原理

let arr 1,2,3,4,5,12,3,zs 7,8,9,10,11,1,2,3,4 console.log arr.flat infinity 1,2,3,4,5,12,3,zs 7,8,9,10,11,1,2,3,4 1 首先進行型別判斷,需要判斷當前呼叫方法的this是否為乙個陣列,若不...

flat 多維陣列 拉平 ,變成一維陣列

array.flat 用於將巢狀的陣列 拉平 變成一維的陣列。該方法返回乙個新陣列,對原資料沒有影響。var arr flat 預設只會 拉平 一層,拉平多層可以將flat 方法的引數寫成乙個整數,表示想要拉平的層數。arr.flat 拉平一層 如果不管有多少層巢狀,都要轉成一維陣列,可以用infi...

es6中陣列的flat 和flatMap

今天看到一道題,把乙個巢狀的陣列扁平化於是想到es6有這麼一段操作 array.prototype.flat 用於將巢狀的陣列 拉平 變成一維陣列。該方法返回乙個新陣列,對原資料沒有影響 而且flat 預設只會 拉平 一層,如果要處理多層的巢狀陣列,可以將flat 方法的引數寫成乙個整數 1,2,3...