使用reduce+concat封装函数递归实现数组降维(拍平)

const arr = [8, [5, 9, 4], 1, 3, [7, 5, 10, [3, 4, 6, 2]], 4, 3, 2, 4]
/**
 * 使用reduce+concat递归封装一个函数实现数组拍平
 */
const func = array => {
  // 如果传入的不是数组 则返回
  if (!Array.isArray(array)) return
  // 使用reduce遍历数组,给定义一个初始值空数组,如果遍历的当前子元素是数组,那么拼接它继续递归后的结果,如果不是数组那么就是值,直接concat添加到数组尾部
  return array.reduce(
    (prev, curr) =>
      Array.isArray(curr) ? prev.concat(func(curr)) : prev.concat(curr),
    []
  )
}
console.log(func(arr)) // [ 8, 5, 9, 4, 1, 3, 7, 5, 10, 3, 4, 6, 2, 4, 3, 2, 4 ]


版权声明:本文为Suk__原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。