JS中数组扁平化处理方法

134 阅读1分钟
let arr = [1, [2, 3, [4, 5, [6, 7], 8], 9], 10]
​
// 1. flat()数组方法    
// 默认只扁平化一层,相当于flat(1),如果要全部扁平化,参数为Infinity
let res1 = arr.flat(Infinity)
console.log(res1)
​
// 2. toString()
let res2 = arr.toString().split(',').map(item => Number(item))
console.log(res2)
​
// 3. join()
let res3 = arr.join(',').split(',').map(item => Number(item))
console.log(res3)
​
// 4. reduce()方法
function flatten(arr) {
  return arr.reduce((result, item) => result.concat(Array.isArray(item) ? flatten(item) : item), [])
}
let res4 = flatten(arr)
console.log(res4)
​
// 5. 递归实现
function flat(arr) {
  let result = []
  arr.forEach(item => {
    if(Array.isArray(item)) {
      result = result.concat(flat(item))
    } else {
      result = result.concat(item)
    }
  })
  return result
}
let res5 = flat(arr)
console.log(res5)