扁平化 Flat

  • 什么是扁平化 ?

   意思是将多维数组转化为一维数组

   话不多说,直接上代码。

  • 直接方式

   arr.flat(Infinity);

  • For 循环 + 递归 
function flat(arr) {
    let dd = [];
    for(let i=0; i<arr.length; i++) { 
        if(Array.isArray(arr[i])) {
            return arguments.callee(dd.concat(...arr[i]))
        } else {
            dd.push(arr[i])
        } 
    }  
     return dd;
}
  • reduce + 递归
function flat(arr) {
    return arr.reduce((pre,cur) => {
        return pre.concat(Array.isArray(cur) ? flat(cur) :  cur);
    },[])
}    
  • while 循环输出
while (arr.some(Array.isArray)) {
    arr= [].concat(...arr);
}

  以上均经过实践有效,当然也有其他的一些方法,考察的是对不同方法的理解和掌握程度。

原文地址:https://www.cnblogs.com/strivegys/p/12849157.html