JS數(shù)組扁平化(flat)方法總結(jié)詳解
需求:多維數(shù)組=>一維數(shù)組
let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary);
第0種處理:直接的調(diào)用
arr_flat = arr.flat(Infinity);
第一種處理
ary = str.replace(/(\[\]))/g, '').split(',');
第二種處理
str = str.replace(/(\[\]))/g, ''); str = '[' + str + ']'; ary = JSON.parse(str);
第三種處理:遞歸處理
let result = []; let fn = function(ary) { for(let i = 0; i < ary.length; i++) }{ let item = ary[i]; if (Array.isArray(ary[i])){ fn(item); } else { result.push(item); } } }
第四種處理:用 reduce 實(shí)現(xiàn)數(shù)組的 flat 方法
function flatten(ary) { return ary.reduce((pre, cur) => { return pre.concat(Array.isArray(cur) ? flatten(cur) : cur); }) } let ary = [1, 2, [3, 4], [5, [6, 7]]] console.log(ary.MyFlat(Infinity))
第五種處理:擴(kuò)展運(yùn)算符
while (ary.some(Array.isArray)) { ary = [].concat(...ary); }
這是一個(gè)比較實(shí)用而且很容易被問到的問題,歡迎大家交流補(bǔ)充。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于JS如何實(shí)現(xiàn)類似QQ好友頭像hover時(shí)顯示資料卡的效果(推薦)
通過本文給大家介紹鼠標(biāo)經(jīng)過好友列表中的好友頭像時(shí)顯示資料卡的效果,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-06-06Javascript將雙字節(jié)字符轉(zhuǎn)換成單字節(jié)字符并計(jì)算長(zhǎng)度
這篇文章主要介紹Javascript將雙字節(jié)字符轉(zhuǎn)換成單字節(jié)字符并計(jì)算長(zhǎng)度的方法,簡(jiǎn)單實(shí)用,需要的朋友可以參考下。2016-06-06JS實(shí)現(xiàn)簡(jiǎn)單獲取最近7天和最近3天日期的方法
這篇文章主要介紹了JS實(shí)現(xiàn)簡(jiǎn)單獲取最近7天和最近3天日期的方法,涉及javascript針對(duì)日期與時(shí)間的相關(guān)數(shù)值運(yùn)算與轉(zhuǎn)換操作技巧,需要的朋友可以參考下2018-04-04這應(yīng)該是最詳細(xì)的響應(yīng)式系統(tǒng)講解了
這篇文章主要介紹了這應(yīng)該是最詳細(xì)的響應(yīng)式系統(tǒng)講解了,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07微信小程序利用canvas 繪制幸運(yùn)大轉(zhuǎn)盤功能
本文通過一段簡(jiǎn)單的實(shí)例代碼給大家介紹微信小程序利用canvas 繪制幸運(yùn)大轉(zhuǎn)盤,代碼很簡(jiǎn)單,感興趣的朋友跟隨腳本之家小編一起看看吧2018-07-07JS類中定義原型方法的兩種實(shí)現(xiàn)的區(qū)別
JS類中定義原型方法的兩種實(shí)現(xiàn)的區(qū)別...2007-03-03