多维数组展开

原理:

  • 利用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
Last Updated: 9/12/2018, 7:24:40 PM