javascript如何合并多层级数组
作者:黄元帅
这篇文章主要介绍了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)
数组累计执行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 } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。