数组扁平化

文章介绍了多种在JavaScript中将多维数组扁平化的方法,包括使用for循环、reduce函数、some方法结合扩展运算符、split和toString方法,以及内置的flat方法。每种方法都详细阐述了其实现逻辑,帮助读者理解如何处理数组嵌套问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

for循环

 function flatten(arr)
 {
    //定义result作为最后的结果保存
    let result=[]
     for(let i=0;i<arr.length;i++)
   {
    //判断如果是数组的话,继续flatten,用原本的结果拼接上后面的结果
         if(Array.isArray(arr[i]))
       {
          result=result.concat(flatten(arr[i]))
       }else{
    //如果不是数组的话,直接再结果上push
            result.push(arr[i])
        }
    }
    return result;
 }

reduce()

function flatten(arr)
{
    let result=[]
  //  reduce也类似一个循环 有之前的值和现在的值   后面的[]是让最初始的值是空数组
    return arr.reduce(function(pre,cur)
    {
        return pre.concat(Array.isArray(cur)?flatten(cur):cur)
    },[])
}

some()+'…'扩展运算符

function flatten(arr)
{
  //  some函数:看数组里面的每一个值是否符合要求
 //   如果有一个值符合,则直接返回true,底下的将不会继续执行
  //  如果都不符合,则直接返回flase
    while(arr.some(i=>Array.isArray(i)))
    {
        console.log(...arr)
   // ...展开数组
        arr=[].concat(...arr)
        console.log('arr'+arr)
    }
    return arr
}

split()+toString()

 function flatten(arr)
 {
    //首先将数组转化为字符串
    //然后用split分割字符串,得到[ '1', '3', '4', '3', '4', '5', '4', '5', '6' ]
    //最后将他们都转换成数字就可以
     return arr.toString().split(',').map(i=>Number(i));
 }

flat()

function flatten(arr)
 {
//     //在一些复杂的场合,数组的层级不单一比较复杂的情况下,不必去逐个计算数组的嵌套深度,可以借助参数 Infinity ,就可以将所有层级的数组展平。
   return arr.flat(Infinity)
 }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值