数组扁平化


数组扁平化

    + 把多维数组拆分成一维数组
    + 核心: 递归遍历原始数组
      => 把每一个层级上的内容拿出来放在一个新数组内

一、原始封装

function flatArr(origin) {
      console.log('原始数组 : ', origin)

      const newArr = []

      // 利用一些操作去实现递归遍历
      function flat(arr, level) {
        for (let i = 0; i < arr.length; i++) {
          // 向新数组内追加的时候
          // 如果当前这一项不是数组, 才追加
          if (arr[i].constructor === Array) {
            flat(arr[i], level + 1)
          } else {
            newArr.push({
              content: arr[i],
              level: level
            })
          }
        }
      }

      flat(origin, 1)

      // 返回拆分好的新数组
      return newArr
    }

    // 将来使用的时候
    const origin = [ 1, 2, [ 3, 4, [ 5, 6, [ 7, [ 8, [ 9 ] ] ] ] ] ]
    const res = flatArr(origin)
    console.log('扁平化以后', res)

二、ES6 内数组提供了一个 flat 的方法

    const origin = [ 1, 2, [ 3, 4, [ 5, 6, [ 7, [ 8, [ 9 ] ] ] ] ] ]
    const res = origin.flat(Infinity)
    console.log(res)

三、纯数字的数组进行扁平化

 const origin = [ 1, 2, [ 3, 4, [ 5, 6, [ 7, [ 8, [ 9 ] ] ] ] ] ]
    const res = origin.toString().split(',').map(item => item - 0)
    console.log(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Woli美美啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值