js數組的扁平化

數組扁平化

const a = [[1], [3, [4, 5, [6, 7]]], [8], [9, [2, 10]]]

方法1:遞歸

循環數組元素,若是仍是一個數組,就遞歸調用該方法數組

function flatten1(arr){
    let res = [];
    for(var i=0;i<arr.length;i++){
        if(Array.isArray(arr[i])){
            res = res.concat(flatten1(arr[i]));
        } else {
            //注意concat 和push 方法的返回值不一樣
            //res=res.concat(arr[i]);
            res.push(ary[i])
        }
    }
    return res;
}

方法2:

使用reduce來簡化方法1的代碼:函數

function flatten2(arr){
    return arr.reduce((prev, cur) => prev.concat(Array.isArray(cur) ? flatten2(cur) : cur),[])   
}

方法3:

toString方法轉成字符串,split方法把字符串切割成數組,字符串拼接方法code

function flatten3(arr){
    return arr.toString().split(',').map(item=> +item)
}

方法4:

some則當其中一個返回true,則最終結果爲true, 至關於邏輯運算符||。遞歸

function flatten4(arr){
    while(arr.some(item => Array.isArray(item))){
        arr = [].concat(...arr);
    }
    return arr;
}

方法5:

every方法表示當數組每一個元素在斷定函數中都返回true,則最終結果爲true,至關於邏輯運算符 &&字符串

function flatten5(arr) {
    while (!arr.every(item => typeof item === 'number' && !isNaN(item))) {
        arr = [].concat(...arr);
        console.log(arr);
    }
    return arr;
}
console.log(...a)
相關文章
相關標籤/搜索