javascript如何合并多層級(jí)數(shù)組
javascript合并多層級(jí)數(shù)組
需求
返回一個(gè)數(shù)組的最低層級(jí)展現(xiàn)(遍歷出數(shù)組中每個(gè)元素)
- 輸入:一個(gè)數(shù)組
- 輸出:修改后的單層數(shù)組
代碼
const deepFlatten = arr=>[].concat(...arr.map(v=>Array.isArray(v)?deepFlatten(v) : v));
console.log('[1,[2],[3,[4]],[5,[6,[7,8]]]]合并后的數(shù)組為:'+deepFlatten([1,[2],[3,[4]],[5,[6,[7,8]]]]));效果

一點(diǎn)想法
Array的map()方法會(huì)返回處理后的結(jié)果,搭配使用ES6中新的特性——擴(kuò)展運(yùn)算符…使遞歸更加高效、易懂。
javascript數(shù)組操作合集
數(shù)組操作:
改變?cè)瓟?shù)組
arr.push(value)數(shù)組尾部增加arr.pop()數(shù)組尾部刪除arr.unshift(value)數(shù)組頭部增加arr.shift()數(shù)組頭部刪除arr.sort((a,b)=>a-b)數(shù)組排序(升序)arr.splice(start,length,value…)數(shù)組指定位置增刪arr.reverse()數(shù)組倒置delete arr[i]數(shù)組清空某一個(gè)值為undefinedarr.fill(value,start,end)填充數(shù)組arr.copyWithin(targe,start,end)數(shù)組切片復(fù)制到數(shù)組新位置arr.toString()數(shù)組轉(zhuǎn)化成字符串Array.from(arr)set類型等類數(shù)組轉(zhuǎn)化成數(shù)組
不改變?cè)瓟?shù)組
arr.forEach(fn)遍歷arr.filter(fn)篩選arr.map(fn)遍歷arr.slice(start,end)裁剪arr.findIndex((item,index,arr)=>{})找值,返回序號(hào)arr.find(fn)找值,返回值arr.indexOf(item,start)找值,返回序號(hào),不能查找NaNarr.includes(item,index)找值,返回boolean,可查找NANarr.lastIndexOf(item,start)反向找值,返回序號(hào)arr.some(fn)找是否存在,返回booleanarr.every(fn)所有子項(xiàng)是否條件都符合,返回booleanarr.join(‘’)用什么拼接arr.reduce(fn)數(shù)組累計(jì)執(zhí)行arr.reduceRight(fn)for(let [k,v] of a.entries())遍歷key和valuearr.flat(層級(jí))層級(jí)攤平arr.flatMap(fn)類似map,層級(jí)無(wú)視arr.concat(value)合并數(shù)組Array.isArray(arr)判斷是否是數(shù)組arr.entries()返回?cái)?shù)組的課迭代對(duì)象,key和valuearr.keys()返回?cái)?shù)組的課迭代對(duì)象arr.values()返回?cái)?shù)組的課迭代對(duì)象
例:let a = [11,22,33] 求和
ruduce((sum,item)=>{sum+=item;return sum})
/*
? ? 確定對(duì)象o是不是類數(shù)組對(duì)象
*/
function isArrayLike(o) {
? ? if (o
? ? ? ? && typeof o === 'object' &&
? ? ? ? Number.isFinite(o.length) &&
? ? ? ? o.length >= 0 &&
? ? ? ? Number.isInteger(o.length) &&
? ? ? ? o.length < 4294967295) {
? ? ? ? return true
? ? } else {
? ? ? ? return false
? ? }
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript定義類和類的實(shí)現(xiàn)實(shí)例詳解
這篇文章主要介紹了javascript定義類和類的實(shí)現(xiàn),結(jié)合實(shí)例形式較為詳細(xì)的分析了JavaScript類的定義方式與相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12
JavaScript實(shí)現(xiàn)數(shù)值自動(dòng)增加動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)數(shù)值自動(dòng)增加動(dòng)畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
ajax 同步請(qǐng)求和異步請(qǐng)求的差異分析
ajax 同步請(qǐng)求和異步請(qǐng)求的差異分析,需要的朋友可以參考下。2011-07-07
uniapp打開(kāi)地圖直接獲取位置的實(shí)現(xiàn)代碼
這篇文章主要介紹了uniapp打開(kāi)地圖直接獲取位置的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-08-08
JS 非圖片動(dòng)態(tài)loading效果實(shí)現(xiàn)代碼
功能說(shuō)明:譬如在按某個(gè)button時(shí),顯示消息"Loading”,然后每隔一秒后后面加上".",至一定數(shù)量的"."時(shí)如:"Loading...",再重置此消息為"Loading",繼續(xù)動(dòng)態(tài)顯示,直至按鈕事件處理完成。2010-04-04
JS將json字符串轉(zhuǎn)換為JsonObject的多種實(shí)現(xiàn)方法
在Web前端開(kāi)發(fā)中,JSON(JavaScript Object Notation)作為數(shù)據(jù)交換格式被廣泛使用,它輕量級(jí)且易于人類閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,當(dāng)從服務(wù)器接收數(shù)據(jù)時(shí),我們需要將其轉(zhuǎn)換為JSON對(duì)象以便于操作,本文將深入探討如何利用JavaScript實(shí)現(xiàn)這一轉(zhuǎn)換過(guò)程2025-02-02
js刷新頁(yè)面location.reload()用法詳解
這篇文章主要介紹了js刷新頁(yè)面location.reload()用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
js 將input框中的輸入自動(dòng)轉(zhuǎn)化成半角大寫(xiě)(稅號(hào)輸入框)
本文主要介紹了稅號(hào)輸入框:將input框中的輸入自動(dòng)轉(zhuǎn)化成半角大寫(xiě)的方法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
JS+CSS實(shí)現(xiàn)的藍(lán)色table選項(xiàng)卡效果
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)的藍(lán)色table選項(xiàng)卡效果,通過(guò)鼠標(biāo)事件調(diào)用自定義函數(shù)實(shí)現(xiàn)頁(yè)面元素樣式的遍歷與動(dòng)態(tài)切換效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10

