1.es6 flat()
let arr = [1 ,[2, 3]]
console.log(arr.flat()); // [1, 2, 3]
let arr = [1, [2, [3, [4, 5]]]]
console.log(arr.flat(Infinity)); // [1, 2, 3, 4, 5]
2.toString()
let arr = [1, 2, 4, 5, [6, 7, 8, [9, 10, 11, 12, [13, 14, 15]]]]
console.log(arr.toString()) // 输出为:1,2,4,5,6,7,8,9,10,11,12,13,14,15
let newArr = arr.toString().split(',')
console.log(newArr)
// 输出为:["1", "2", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]
3.join()
let arr = [1, 2, 3, 4, 5, [6, 7, 8, [9, 10, 11, 12, [13, 14, 15, 16]]]]
console.log(arr.join()) // 输出为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
let newArr = arr.join().split(',')
console.log(newArr)
// 输出为:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]
4.apply结合concat拉平数组
let arr = [1,[2,3],4,[5,6]];
console.log( [].concat.apply( [], arr ) )
//[1,2,3,4,5,6]复制代码
注:此方法只能用于二维数组,多维数据不起作用
5.递归
let arr = [1, 2, 3, 4, 5, [6, 7, 8, [9, 10, 11, 12, [13, 14, 15, 16]]]]
let newArr = [] // 存放转化后的一维数组
function arrConversion (arr) {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
arrConversion(arr[i])
} else {
newArr.push(arr[i])
}
}
}
arrConversion(arr)
console.log(newArr)
// 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
6.reduce