6種方式實(shí)現(xiàn)JavaScript數(shù)組扁平化(flat)方法的總結(jié)

let arr = [1, [2, [3, [4, 5]]], 6];let str = jsON.stringify(ary);
解決方案:
面對(duì)這個(gè)需求,我們有6種處理方式,希望這些方式方法可以給你一些啟發(fā)。
第1種處理:直接的調(diào)用
arr.flat(Infinity);
注意:flat和flatMap方法為ES2019(ES10)方法,目前還未在所有瀏覽器完全兼容。
第2種處理
str.replace(/(\[\]))/g, '').split(',');
第3種處理
str = str.replace(/(\[\]))/g, '');str = '[' + str + ']';var ary = jsON.parse(str);
第4種處理:遞歸處理
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);}}}
第5種處理:用 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))
第6種處理:擴(kuò)展運(yùn)算符
while (ary.some(Array.isArray)) {ary = [].concat(...ary);}
總結(jié)
這6種方式,你學(xué)會(huì)了嗎?
學(xué)習(xí)更多技能
請(qǐng)點(diǎn)擊下方公眾號(hào)
![]()

評(píng)論
圖片
表情
