码上掘金实现数组扁平化吧

79 阅读1分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

介绍

数组扁平化在前端的api是十分常见的,我们在许多场景下都需要去进行数组的拍平处理,接下来,我将实际的设计一个数组扁平化处理过程,如果大家有任何疑问和难题都可以评论区留言,我会第一时间解决和处理的。谢谢各位观众老爷的支持。

码上掘金地址

核心讲解

function reduceArr(arr,k) {
  let res = []
  const main = (level,arr) => {
    if(level) 
      for(let i=0;i<arr.length;i++) {
         if(!Array.isArray(arr[i])) res.push(arr[i])
         else main(level-1,arr[i])
      }
    else res.push(...arr)
  }
  main(k,arr)
  return res
}

let res = [1,[2],[3,4,[5,[6]]]]

console.log(reduceArr(res,2))

代码的逻辑看起来比较间接,由于是递归的设计,因此代码比较简短,但是核心的内部设计我将逐步的拆分讲解。

  1. 设计一个函数,第一个参数是传递的数组,第二个参数是拍平的层数
  2. 内部设计一个递归函数,并且使用一个数组保存最后的结果
  3. 递归函数开始判断如果满足拍平的层数后,进行数组的遍历,如果是元素直接添加
  4. 如果不是元素,持续的递归进入下一层的拍平递归函数中

总结

通过对扁平化的分步讲解,大家肯定对递归的扁平化处理有了很深的见解,后续大家可以亲自在码上掘金动手实践会更加明白其中的设计过程,谢谢各位的观看,有疑问评论区见。