# 多维数组展开
# 原理:
- 利用reduce累加,将数组平铺。
- 判断每次传入的第二个参数是否为数组,如果是数组的话,递归。
- 然后每层都平铺,一层一层用
concat
连接成一个数组
# 代码:
const flatten = arr => {
return arr.reduce((flat, next) => {
console.log(flat, next); // flat:初始值或累加的值 next:当前值
return flat.concat(Array.isArray(next) ? flatten(next) : next);
// 判断当前元素是否为数组 决定是否递归 将值返回到下次循环
}, []);
};
// 运行示例:
let nestedArr = [1, 2, [3, 4, [5, [6, 7]]]]; // 四维数组 展开
console.log(flatten(nestedArr)); // [1,2,3,4,5,6,7]
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10