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]数组清空某一个值为undefined -
arr.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)找值,返回序号,不能查找NaN -
arr.includes(item,index)找值,返回boolean,可查找NAN -
arr.lastIndexOf(item,start)反向找值,返回序号 -
arr.some(fn)找是否存在,返回boolean -
arr.every(fn)所有子项是否条件都符合,返回boolean -
arr.join(‘’)用什么拼接 -
arr.reduce(fn)数组累计执行 arr.reduceRight(fn)-
for(let [k,v] of a.entries())遍历key和value -
arr.flat(层级)层级摊平 -
arr.flatMap(fn)类似map,层级无视 -
arr.concat(value)合并数组 -
Array.isArray(arr)判断是否是数组 -
arr.entries()返回数组的课迭代对象,key和value -
arr.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
}
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
原文地址:https://huangyuanshuai.blog.csdn.net/article/details/79262917