【js基础编程之数组扁平化】

34 阅读1分钟

数组扁平化

在业务场景中,我们通常会遇到后台有时候返回多级的数组结构,比如 [1,3,4,5,[7,8,[10,11,12,13]]多层级数组结构,那么我们通常是要做一层数组处理,数据扁平化,说一下我的处理方式,因为本人是前端小白,所以写的不好的话,希望你们多多提供意见。谢谢啦~

递归处理

function flattenArray(arr){
    // 对arr参数类型判断
    if(!Array.isArray(arr)) return new TypeError("类型错误")
    if(!arr.length) return [];
    const res = [];
    arr.forEach(item=>{
        if(Array.isArray(item)){
            res = res.concat(flattenArray(item))
        }else{
            res.push(item)
        }
    })
    return res;
}

利用es6提供的reduce方法

 const flattenArray = (arr) => {
        return arr.reduce((acc, cur) => {
          return acc.concat(Array.isArray(cur) ? flattenArray(cur) : cur)
        }, [])
 }

利用flat

const flat = (arr) =>{ return arr.flat(Infinity) }