1. 程式人生 > 其它 >js多維陣列降成一維陣列

js多維陣列降成一維陣列

第一種方法:使用join方法加split方法

 //第一種方法:使用join方法將陣列降維成一維字串,然後使用split方法轉為陣列
        let arr = [1, [2, 3, [7, 8, 9]],
            [4, 5, [10, 11, 12, [13, 14, 15]], 6]
        ];
        let arrjoin = arr.join().split(',');
        console.log(arrjoin) //['1', '2', '3', '7', '8', '9', '4', '5', '10', '11', '12', '13', '14', '15', '6']

第二種方法:使用遞迴

let arr2 = [1, [2, 3, [7, 8, 9]],
            [4, 5, [10, 11, 12, [13, 14, 15]], 6]
        ];
        //建立一個新陣列用於儲存降維後的新陣列
        let newArr = [];
        // 建立一個toArr函式
        let toArr = (arr2) => {
            // 遍歷引數arr
            for (let i = 0; i < arr2.length; i++) {
                // 判斷這個引數是不是陣列,是陣列重新呼叫toArr函式,進行遞迴,非陣列引數直接新增到新陣列中
                if (arr2[i] instanceof Array) {
                    toArr(arr2[i]);
                } else {
                    newArr.push(arr2[i]);
                }
            }
        }
        toArr(arr2);
        console.log(newArr);//['1', '2', '3', '7', '8', '9', '4', '5', '10', '11', '12', '13', '14', '15', '6']

第三種方法:使用陣列的flat方法

// Array.flat() 接收數字引數, 預設是1, 也就是降一個數組, 取值為Infinity表示直接降維成一維陣列
        let arr3 = [
            1, [2, 3, [7, 8, 9]],
            [4, 5, [10, 11, 12, [13, 14, 15]], 6]
        ];
        let arr4 = [1, 2, [3, 4, [5]]];
        console.log(arr4.flat()); //[1, 2, 3, 4,[5]]
        console.log(arr3.flat(Infinity)) //[1, 2, 3, 7, 8, 9, 4, 5, 10, 11, 12, 13, 14, 15, 6]
            //使用flat方法清除陣列中的空元素
        let arr5 = [1, 2, 3, , 5];
        console.log(arr5.flat()); //[1, 2, 3, 5]