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

写一个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], [])
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文主要从应用来讲数组api的一些骚操作;如一行代码扁平化n维数组、数组去重、求数组最大值、数组求和、排序、对象和...
    小虾米前端阅读 2,806评论 0 0
  • 有时候购买的商品,属性很多,想做成表格进行筛选。自然用技术宅的爬虫方式做了 ```python # -*- ...
    超哥__阅读 9,810评论 0 8
  • Lodash是一个轻量级的JavaScript工具函数库,它方便了日常开发中对数据的操作,提高了开发效率。 ​ ...
    zhouqichao阅读 14,777评论 4 12
  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 5,523评论 0 9
  • “喂,道友留步,我和你有缘,西方教了解下。皈依后,不受阐、截二教管控,保你不陨落,法力兑换成佛力,没有归零的风险。...
    王富贵er阅读 2,812评论 0 1

友情链接更多精彩内容