数组的扁平化处理(多维数组转一维数组)

207 阅读1分钟
  • 二维数组转一维数组:(使用reduce+concat来实现)
    function arrayFlat(arr){
        return arr.reduce((prev,cur)=>{
            return prev.concat(cur);
        },[])
    }
  • 多维数组转一维数组:(使用reduce+concat+递归来实现)
    function arrayFlat(arr){
        return arr.reduce((prev,cur)=>{
            return Array.isArray(cur)? prev.concat(arrayFlat(cur)) :prev.concat(cur);
        },[])
    }
  • 上面俩个是不改变原数组的,下面的实现改变原来的数组
function arrayFlat(arr){
    for(let i = 0; i< arr.length;i++){
        let flag =Array.isArray(arr[i]);
        if(flag){
            arrayFlat(arr[i]);
            let len = arr[i].length;
            arr.splice(i,1,...arr[i]);
            i +=len -1
            
        }
    }
    return arr
}