数组拍平,多维数组转为一维数组

164 阅读1分钟

数组拍平的三种方式

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]