js平铺多维数组

  • Post author:
  • Post category:其他


将多维数组平铺成一维数组,例如将[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]



版权声明:本文为qq_40731976原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。