如何实现数组扁平化

先来个需求
把数组[1,[2,[3,4]]]转化为一维数组这个怎么实现
1.循环加递归

 function flat(arr) {
            //声明一个新的数组
            var newArr = [];
             //给原数组做循环 
            for (var i = 0, len = arr.length; i < len; i++) {
                // 如果arr[i]是一个数组
                if (Array.isArray(arr[i])) {
                    //那么再次调用这个函数  进行递归
                    newArr = newArr.concat(flat(arr[i]));
                } else {
                    //否则直接将arr[i]push到新的数组里
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }
      let newarr =  flat([1,[2,[3,4]]])
      console.log(newarr);
//跟上面的一个道理
 function flat(arr){
             let newArr =[]
             arr.forEach(item=>{
                  if(Array.isArray(item)){
                     newArr =newArr.concat(flat(item))
                  }else{
                      newArr.push(item)
                  }
             })
         }

在这里插入图片描述
2.拓展运算符

  let arr = [1, [2, [3, 4]]];
        function flat(arr) {
            //用some方法判断 arr里面的每一项是不是数组
            while (arr.some(item => Array.isArray(item))) {
                //如果是数组   让他 拼接到一个空数组里
                arr = [].concat(...arr);
            }  //ES6新方法
            return arr;
        }
        console.log(flat(arr))

3.tostring()

 //如果数组是一个数字类型数组  可以用tostring()
        function flat(arr) {
            return arr.toString().split(',').map(function (item) {
                return parseInt(item);
            })
        }

        flat(arr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值