第一种方法:使用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]