数组拍平的三种方式
1、reduce
let arr = [1,2,3,[4,5,[6,7,8]]]
function reduceA(array) {
return array.reduce(function (prev,current) {
return prev.concat(Array.isArray(current)?reduceA(current):current)
},[])
}
let na = reduceA(arr)
console.log(na);//[1, 2, 3, 4,5, 6, 7, 8]
2、es6自带的flat函数
let arr = [1,2,3,[4,5,[6,7,8]]]
function flatA(array) {
return array.flat(Infinity);
}
let nafl = flatA(arr)
console.log(nafl);//[1, 2, 3, 4,5, 6, 7, 8]
3、用while循环加扩展运算符
let arr = [1,2,3,[4,5,[6,7,8]]]
function whileA(array) {
while (array.some(Array.isArray)) {
array = [].concat(...array)
}
return array
}
let naw = whileA(arr)
console.log(naw);//[1, 2, 3, 4,5, 6, 7, 8]