天天看點

數組扁平化原創不易,自由轉載,保留出處!

今天看到了數組扁平化處理,猶記得之前面試被問到過,下面介紹一下數組扁平化處理的幾種形式:

題目要求:

/*
    *将數組 arr = [1,2,3,4,[5,6,7,[8,9]]] 轉化為 [1, 2, 3, 4, 5, 6, 7, 8, 9]
    */
           

1、遞歸

var arr = [1,2,3,4,[5,6,7,[8,9]]];

    //方法一:遞歸
    function flatFun(arr) {
        let list = [];
        arr.forEach(item => {
            if(item instanceof Array) {
                list = list.concat(flatFun(item));
            } else {
                list.push(item);
            }

        })
        return list
    }
    let res1 = flatFun(arr);
    console.log(res1)
           

2、通過數組的原型函數,需預先知道數組的深度 

var arr = [1,2,3,4,[5,6,7,[8,9]]];

    //方法二:預先知道數組深度的情況下
    let res2 = arr.flat(3);
    console.log(res2)
           

3、通過toString方法【具有比較大的局限性,當元素不為數字時,結果可能不正确】

var arr = [1,2,3,4,[5,6,7,[8,9]]];

    //方法三:通過toString()
    let res3 = arr.toString().split(",").map(item => Number(item));
    console.log(res3);
           

4、通過reduce進行歸并

//方法4 通過reduce進行數組歸并
    var arr = [1,2,3,4,[5,6,7,[8,9]]];
    function flatten(arr){
       return arr.reduce(function(prev,next){
           console.log(prev);
            return prev.concat(Array.isArray(next)?flatten(next):next);
       },[]);//reduce的第二個參數:作為歸并基礎的初始值
    }
    var res4 = flatten(arr);
    console.log(res4);
           

 看到這裡,是不是學到了很多你不知道的js;

原創不易,自由轉載,保留出處!

繼續閱讀