发布于 

数组的扁平化的优化

优化前

1
2
3
4
5
6
7
8
let arr = [1, [2, [3, 4], [5, 6]]];
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flatten(arr))// [1, 2, 3, 4, 5, 6]

优化后

1
2
let arr = [1, [2, [3, 4], [5, 6]]]; 
console.log(arr.flat(Infinity)); // [1, 2, 3, 4, 5, 6]

解析

我们可以直接调用 ES6 中的 flat 方法来实现数组扁平化。flat 方法的语法

1
arr.flat( [depth] )

其中depthflat 的参数,depth 是可以传递数组的展开深度(默认不填、数值是 1),即展开一层数组。如果层数不确定,参数可以传进 Infinity,代表不论多少层都要展开。