JS数组扁平化

一、代码最少的扁平化,利用es6中数组flat()方法(推荐使用)

 // 利用flat() 参数为指定要提取嵌套数组的结构深度,默认值为 1,
    // 参数为:Infinity,可展开任意深度的嵌套数组
    function flatten4(arr) {
      return arr.flat(Infinity);
    }
    console.log(flatten4([1, [2, [3, 4]]]));//[ 1, 2, 3, 4 ]

二、如果数组中的元素都为数字        

        利用toString进行扁平化(推荐使用)

// 如果数组里面都是数字,可以使用toString
    function flatten1(arr) {
      let arr1 = arr.toString().split(",");
      return arr1.map((item) => {
        return +item;
      })
    }
    console.log(flatten1([1, [2, [3, 4]]]));[ 1, 2, 3, 4 ]

三、利用递归实现

        1.循环递归

function flatten(arr) {
      let result = [];
      for (let i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i])) { //如果是数组,就进行flatten
          result = result.concat(flatten(arr[i])) //数组的拼接
        } else {
          result.push(arr[i]);
        }
      }
      return result;
    }
    console.log(flatten([1, [2, [3, 4]]])); //[ 1, 2, 3, 4 ]

        2.利用数组api简化代码

   // reduce 利用数组API进行递归
    function flatten2(arr) {
      return arr.reduce((prev, item) => {
        return Array.isArray(item) ? prev.concat(flatten2(item)) : prev.concat(item); //这里不能用push  因为push返回的数组长度,
      }, [])
    }
    console.log(flatten2([1, [2, [3, 4]]])); //[ 1, 2, 3, 4 ]

        3.利用扩展运算符

 //es6中的数组扁平化利用扩展运算符...
    function flatten3(arr) {
      return arr.reduce((prev, item) => {
        return Array.isArray(item) ? [...prev, ...flatten2(item)] : [...prev, item];
      }, [])
    }
    console.log(flatten3([1, [2, [3, 4]]])); //[ 1, 2, 3, 4 ]

        除了这上面这几种方法,还有其他的方法,可以进行其他的方法进行扁平化,这几种是小编觉得比较简单,并且好用的。

        学习的路,永无止境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值