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
    }
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
