陣列的扁平化

2022-08-03 04:21:06 字數 1382 閱讀 9428

陣列的扁平化就是陣列裡面巢狀陣列,最後需要的是只有一維的資料

1、es6提供的新方法flat(depth)

let a = [1,[2,3]];

a.flat(); // [1,2,3]

a.flat(1); //[1,2,3]

flat(depth) 方法中的引數depth,代表展開巢狀陣列的深度,預設是1

所以我們可以新增引數1,或者直接呼叫flat()來對2維陣列進行扁平化,如果我們可以提前知道陣列的維度,對這個陣列進行扁平化處理,引數depth的值就是陣列的維度減一。

let a = [1,[2,3,[4,[5]]]];

a.flat(4-1); // [1,2,3,4,5] a是4維陣列

其實還有一種更簡單的辦法,無需知道陣列的維度,直接將目標陣列變成1維陣列。depth的值設定為infinity。

let a = [1,[2,3,[4,[5]]]];

a.flat(infinity); // [1,2,3,4,5] a是4維陣列

2、es5+遞迴

var arr1 = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]];

function flatten(arr) else

} return res;

} flatten(arr1); //[1, 2, 3, 1, 2, 3, 4, 2, 3, 4]

3、es6+reduce方法

var arr1 = [1, 2, [3], [1, 2, 3, [4, [2, 3, 4]]]];

function flatten(arr) ,);

}

這裡使用的是陣列的reduce方法,需要注意的是reduce方法,我們傳遞了兩個引數, 第乙個引數就是就是處理扁平化的箭頭函式 第二個引數是乙個空陣列,也是作為遍歷的開始。(res)

reduce() 方法接收乙個函式作為累加器,陣列中的每個值(從左到右)開始縮減,最終計算為乙個值。

reduce() 可以作為乙個高階函式,用於函式的 compose。

注意: reduce() 對於空陣列是不會執行**函式的。

注:array.reduce(function(total, currentvalue, currentindex, arr), initialvalue)

| total | 必需。初始值, 或者計算結束後的返回值。 |

| currentvalue | 必需。當前元素 |

| currentindex | 可選。當前元素的索引 |

| arr | 可選。當前元素所屬的陣列物件。 |

陣列扁平化

原陣列 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...