扁平化陣列的幾種方法

2021-09-21 17:53:14 字數 2944 閱讀 8484

扁平化管理是企業為解決層級結構的組織形式在現代環境下面臨的難題而實施的一種管理模式。當企業規模擴大時,原來的有效辦法是增加管理層次,而現在的有效辦法是增加管理幅度。當管理層次減少而管理幅度增加時,金字塔狀的組織形式就被「壓縮」成扁平狀的組織形式。

用於將巢狀多層的陣列「拉平」,變成一維的陣列 

1、[1, [2]] => [1,2]

2、[[1, 2], [3, 4]] => [1, 2, 3, 4]

3、[1, 2, [3, 4, [5, 6]]] => [1, 2, 3, 4, 5, 6]

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

語法:let newarray = arr.flat(depth) 

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

flat() 方法會移除陣列中的空項

例子:

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

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

// 指定要提取巢狀陣列的結構深度為1層

let arr2 = [1, 2, [3, 4, [5, 6]]];

arr2.flat(1); // [1, 2, 3, 4, [5, 6]]

// 指定要提取巢狀陣列的結構深度為2層

let arr3 = [1, 2, [3, 4, [5, 6]]];

arr3.flat(2); // [1, 2, 3, 4, 5, 6]

// 使用 infinity 作為深度,展開任意深度的巢狀陣列

let arr4 = [1, 2, [3, 4, [5, 6]]]

arr4.flat(infinity); // [1, 2, 3, 4, 5, 6]

// 移除陣列中的空項

let arr5 = [1, 2, , 4, 5];

arr5.flat(); // [1, 2, 4, 5]

歸併方法 reduce()

我們用reduce函式進行遍歷,把prev的初值賦值為,如果當前的值是陣列的話,那麼我們就遞迴遍歷它的孩子,如果當前的值不是陣列,那麼我們就把它拼接進陣列裡。

let arr = [[1, 2, [3, 4], 5], [6, 7, 8], [[9, 10], 11]];

function flat(arr) , )

}console.log(flat(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

tostring()

tostring()方法有很大侷限性,只適用於陣列元素全部為數字的情況下

// tostring && json.parase

let arr = [[1, 2, [3, 4], 5], [6, 7, 8], [[9, 10], 11]];

function flat(arr)

console.log(flat(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

// tostring && split

let arr = [[1, 2, [3, 4], 5], [6, 7, 8], [[9, 10], 11]];

function flat(arr) )

}console.log(flat(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

// join && split

let arr = [[1, 2, [3, 4], 5], [6, 7, 8], [[9, 10], 11]];

function flat(arr) )

}console.log(flat(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

迴圈+遞迴

遞迴的遍歷每一項,若為陣列則繼續遍歷,否則concat

let arr = [[1, 2, [3, 4], 5], [6, 7, 8], [[9, 10], 11]];

function flat(arr) else

});return result;

}console.log(flat(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

擴充套件運算子. . .

...用於取出引數物件的所有可遍歷屬性,拷貝到當前物件中

扁平化陣列的幾種方法

扁平化陣列總結 逆戰班 1 array prototype flat flat 方法會按照乙個可指定的深度depth遞迴遍歷陣列,並將所有元素與遍歷到的子陣列中的元素合併為乙個新陣列返回。該方法不會改變原陣列 語法 let newarray arr.flat depth 描述 depth為指定要提取...

陣列扁平化的五種方法

陣列扁平化是指將乙個多維陣列變為一維陣列 1,2,3,4,5 1,2,3,4,5 arr.reduce callback accumulator,currentvalue index array initialvalue 遍歷陣列每一項,若值為陣列則遞迴遍歷,否則concat。function fl...

陣列扁平化

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