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]
上一篇:数组的赋值和拷贝


下一篇:js数组