常见的数组扁平化有很多种,我最常用的就是[].flat().但是这个方法IE是不兼容的.

刚好明天周一,这会睡不着.就来总结一下常见的几种数组扁平化的方法吧.

递归
数组转字符串
[].flat()
reduce方法
const arr = [1, 2, 3, [4, 5], 6, [7, 8, [10, 11, 12], [13]], 14]

//es6语法
let newArr = arr.flat(Infinity)
//递归方法
const toArr = (arr) => {
  let newArr = []
  arr.forEach((item) => {
    if (Array.isArray(item)) {
      newArr = newArr.concat(toArr(item))
    } else {
      newArr.push(item)
    }
  })
  return newArr
}

//arr.reduce 方法
const arrReduce = (arr) => {
  return arr.reduce((pre, current) => {
    if (Array.isArray(current)) {
      return pre.concat(arrReduce(current))
    } else {
      return pre.concat(current)
    }
  }, [])
}
//数组转字符串,在将字符串切割成数组

const arrTostring = (arr) => {
  return arr
    .toString()
    .split(',')
    .map((item) => Number(item))
}
console.log(newArr, '数组方法')
console.log(arrTostring(arr), '数组转字符串方法')
console.log(arrReduce(arr), 'reduce方法')
console.log(toArr(arr), '递归方法')

发表评论