实现数组扁平化

这篇博客介绍了数组扁平化的五种不同实现方法,包括递归、reduce函数、扩展运算符与some结合、split和toString以及ES6的flat方法。这些方法分别展示了如何在JavaScript中有效地处理嵌套数组,将它们转换为单一层次的数组。
摘要由CSDN通过智能技术生成
<script>
          // 1,递归实现
    普通的递归思路很容易理解,就是通过循环递归的⽅式,⼀项⼀项地去遍历,如果每⼀项还是⼀个数
组,那么就继续往下遍历,利⽤递归程序的⽅法,来实现数组的每⼀项的连接
          let arr = [1,[2,3[4,5]]]
          function flatten1(arr){
               let res = []
               for(let i = 0;i<arr.length;i++){
                 if(Array.isArray(arr[i])){
                      res = res.concat(flatten(arr[i]))
                 }else{
                      res.push(arr[i])
                 }
               }
               return res
          }
          // 2,reduce函数迭代
          function flatten2(arr){
               return arr.reduce((prev,next)=>{
                    return prev.concat(Array.isArray(next) ? flatten2(next) : next)
               },[])
          }
          // 3,扩展运算符和some一起使用
          function flatten3(arr){
               while(arr.some(item=>Array.isArray(item))){
                    arr = [].concat(...arr)
               }
               return arr
          }
          // 4,split和toString
可以通过 split 和 toString 两个⽅法来共同实现数组扁平化,由于数组会默认带⼀个 toString 的⽅法,
所以可以把数组直接转换成逗号分隔的字符串,然后再⽤ split ⽅法把字符串重新转换为数组,
          function flatten3(arr){
               return arr.toString.split(',');
          }
          // 5,es6中的flat
我们还可以直接调⽤ ES6 中的 flat ⽅法来实现数组扁平化。flat ⽅法的语法: arr.flat([depth])
其中 depth 是 flat 的参数,depth 是可以传递数组的展开深度(默认不填、数值是 1),即展开⼀层数
组。如果层数不确定,参数可以传进 Infinity,代表不论多少层都要展开:
          function flatten4(arr){
               return arr.falt(Infinity)
          }
     </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值