js平铺多维数组

  将多维数组平铺成一维数组,例如将[1,2,[3,4,[5,6,7]]]处理成[1,2,3,4,5,6,7],下面提供三种方式参考。

  • 递归处理
    • 这个方法比较常见,就是遍历每个元素,元素是基本数据类型的话便放进新数组中,如果元素是数组类型,则进行递归继续处理。
let arr1=[]
const tileArr = (arr) => {
    for(let i=0;i<arr.length;i++){
        if (Array.isArray(arr[i])) // 判断元素是否是数组
            return tileArr(arr[i])
        arr1.push(arr[i])
    }
    return arr1
}
tileArr([1,2,[3,4,[5,6,7]]]) // [1,2,3,4,5,6,7]
  • ES6处理
    • 通过ES6的reduce()方法遍历每个元素,再结合concat()方法拼接数组
const tileArr = (arr) =>{
    return arr.reduce((acc,cur) =>
    acc.concat(Array.isArray(cur)?tileArr(cur):cur),[])
}
tileArr([1,2,[3,4,[5,6,7]]]) // [1,2,3,4,5,6,7]
  • 字符串处理
    • 使用String()将多维数组处理字符串的时候可以发现,无论有多少层,都会处理成普通字符串,那么接下来再将字符串分割成数组就行了,这里需要注意元素的类型,number型的话最后要再转换一下。
const tileArr = (arr) => {
    let arr1=String(arr).split(",")
    return arr1.map(function(item){ // 将String转为Number
        return parseInt(item)
    })
}
tileArr([1,2,[3,4,[5,6,7]]]) // [1,2,3,4,5,6,7]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值