javascript如何合并多層級數組
更新時間:2023年01月17日 10:30:57 作者:黃元帥
這篇文章主要介紹了javascript如何合并多層級數組問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
javascript合并多層級數組
需求
返回一個數組的最低層級展現(遍歷出數組中每個元素)
- 輸入:一個數組
- 輸出:修改后的單層數組
代碼
const deepFlatten = arr=>[].concat(...arr.map(v=>Array.isArray(v)?deepFlatten(v) : v)); console.log('[1,[2],[3,[4]],[5,[6,[7,8]]]]合并后的數組為:'+deepFlatten([1,[2],[3,[4]],[5,[6,[7,8]]]]));
效果
一點想法
Array的map()方法會返回處理后的結果,搭配使用ES6中新的特性——擴展運算符…使遞歸更加高效、易懂。
javascript數組操作合集
數組操作:
改變原數組
arr.push(value)
數組尾部增加arr.pop()
數組尾部刪除arr.unshift(value)
數組頭部增加arr.shift()
數組頭部刪除arr.sort((a,b)=>a-b)
數組排序(升序)arr.splice(start,length,value…)
數組指定位置增刪arr.reverse()
數組倒置delete arr[i]
數組清空某一個值為undefinedarr.fill(value,start,end)
填充數組arr.copyWithin(targe,start,end)
數組切片復制到數組新位置arr.toString()
數組轉化成字符串Array.from(arr)
set類型等類數組轉化成數組
不改變原數組
arr.forEach(fn)
遍歷arr.filter(fn)
篩選arr.map(fn)
遍歷arr.slice(start,end)
裁剪arr.findIndex((item,index,arr)=>{})
找值,返回序號arr.find(fn)
找值,返回值arr.indexOf(item,start)
找值,返回序號,不能查找NaNarr.includes(item,index)
找值,返回boolean,可查找NANarr.lastIndexOf(item,start)
反向找值,返回序號arr.some(fn)
找是否存在,返回booleanarr.every(fn)
所有子項是否條件都符合,返回booleanarr.join(‘’)
用什么拼接arr.reduce(fn)
數組累計執(zhí)行arr.reduceRight(fn)
for(let [k,v] of a.entries())
遍歷key和valuearr.flat(層級)
層級攤平arr.flatMap(fn)
類似map,層級無視arr.concat(value)
合并數組Array.isArray(arr)
判斷是否是數組arr.entries()
返回數組的課迭代對象,key和valuearr.keys()
返回數組的課迭代對象arr.values()
返回數組的課迭代對象
例:let a = [11,22,33] 求和
ruduce((sum,item)=>{sum+=item;return sum}) /* ? ? 確定對象o是不是類數組對象 */ 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 ? ? } }
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
wangEditor編輯器失去焦點后仍然可以在原位置插入圖片分析
本文給大家?guī)淼氖且豢罘浅2诲e的富文本編輯器WangEditor,他最大的特點是它在ie6,7,8上都可以做到失去焦點后仍然可以在原位置插入圖片,而且代碼量很少,下面我們就來分析下他是如何實現的呢2015-05-05