使用迭代的方式實現(xiàn)flatten函數(shù)

寫一個flatten函數(shù),實現(xiàn)扁平化數(shù)組的效果。比如:

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]

常規(guī)版

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], [])
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文主要從應(yīng)用來講數(shù)組api的一些騷操作;如一行代碼扁平化n維數(shù)組、數(shù)組去重、求數(shù)組最大值、數(shù)組求和、排序、對象和...
    小蝦米前端閱讀 395評論 0 0
  • 有時候購買的商品,屬性很多,想做成表格進(jìn)行篩選。自然用技術(shù)宅的爬蟲方式做了 ```python # -*- ...
    超哥__閱讀 4,470評論 0 8
  • Lodash是一個輕量級的JavaScript工具函數(shù)庫,它方便了日常開發(fā)中對數(shù)據(jù)的操作,提高了開發(fā)效率。 ? ...
    zhouqichao閱讀 14,261評論 4 12
  • 第四天 數(shù)組【悟空教程】 第04天 Java基礎(chǔ) 第1章數(shù)組 1.1數(shù)組概念 軟件的基本功能是處理數(shù)據(jù),而在處理數(shù)...
    Java幫幫閱讀 1,685評論 0 9
  • “喂,道友留步,我和你有緣,西方教了解下。皈依后,不受闡、截二教管控,保你不隕落,法力兌換成佛力,沒有歸零的風(fēng)險。...
    王富貴er閱讀 400評論 0 1

友情鏈接更多精彩內(nèi)容