美文网首页让前端飞Web前端之路前端杂记
使用迭代的方式实现flatten函数

使用迭代的方式实现flatten函数

作者: 会飞小超人 | 来源:发表于2019-05-17 11:15 被阅读10次

写一个flatten函数,实现扁平化数组的效果。比如:

let arr = [1, 2, [3, 4, 5, [6, 7], 8], 9, 10, [11, [12, 13]]]
得到 flatten(arr)=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

常规版

function flatten(arr) {
  let newArr = []
  function flat(arry) {
    for (let item of arry) {
      if (Array.isArray(item)) {
        flat(item)
      } else {
        newArr.push(item)
      }
    }
  }
  flat(arr)
  return newArr
}

高级版

function flatten(arr) {
  while (arr.some(item => Array.isArray(item))) {
    arr = [].concat(...arr)
  }
  return arr
}

更高级版

const flatten = arr => arr.reduce((pre, cur) => Array.isArray(cur) ? [...pre, ...flatten(cur)] : [...pre, cur], [])

相关文章

网友评论

    本文标题:使用迭代的方式实现flatten函数

    本文链接:https://www.haomeiwen.com/subject/ygenaqtx.html