什么叫數(shù)組拍平枚驻?
概念很簡單濒旦,意思是將一個“多維”數(shù)組降維,比如:
// 原數(shù)組是一個“三維”數(shù)組
const array = [1, 2, [3, 4, [5, 6], 7], 8, 9]
// 可以降成二維
newArray1 = [1, 2, 3, 4, [5, 6], 7, 8, 9]
// 也可以降成一維
newArray2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
數(shù)組拍平也稱數(shù)組扁平化再登、數(shù)組降維尔邓,以下四種方式是我總結(jié)的常用方法晾剖,同學(xué)們直接拷貝可用。
一梯嗽、while遍歷
const arr1 = [1, 2, 3, [4, 5, [7, 8]]];
const flatten = function (arr) {
while (arr.some((v) => Array.isArray(v))) {
arr = [].concat(...arr);
}
return arr;
};
console.log(flatten(arr1));
二钞瀑、map方法
const arr2 = [1, 2, 3, [4, 5, [7, 8]]];
const flatten2 = function (arr) {
return [].concat(
...arr.map((v) => (Array.isArray(v) ? flatten2(v) : v))
);
};
console.log(flatten2(arr2));
三、reduce方法
const arr3 = [-1, [0, 1], [2, 3], [4, [5, 6, 7]]];
function flatten3(arr) {
return arr.reduce(
(pre, cur) => pre.concat(Array.isArray(cur) ? flatArr3(cur) : cur),
[]
);
}
console.log(flatten3(arr2));
四慷荔、flat(Infinity)方法
const arr4 = [-1, [0, 1], [2, 3], [4, [5, 6, 7]]];
const flatArr = arr4.flat(Infinity);
console.log(flatArr);
同學(xué)們驗證之后感覺怎么樣雕什,都是一句代碼搞定,便捷而高效显晶,如果您有更牛掰的方式贷岸,也歡迎留言補充。