JS基础——数组扁平化

108 阅读1分钟

数组扁平化

ES6中的flat

  1. 对原数组没有影响
  2. 默认为平摊成一层
  3. flat参数若为整数,表示想要拉平的层数
  4. 若参数为Infinity,表示不管数组嵌套多少层,最终都摊成一层
  5. 如果原数组中存在空值,flat会直接跳过
const arr = [[1,2,3],[4],[5,6,[7,[8]]]]
let arr1 = arr.flat()   

正则表达式

let arr2 = `[${JSON.stringify(arr).replace(/(\[|\])/g,"")}]`

使用reduce

遍历数组中的每一个元素,如果是数组就再次进行遍历,反之concat

function flat(arr) {
  return arr.reduce((pre, cur) => {
    return pre.concat(Array.isArray(cur) ? flat(cur) : cur)
  }, [])
}