JS数组降维的几种方法详解
导读:收集整理的这篇文章主要介绍了JS数组降维的几种方法详解,觉得挺不错的,现在分享给大家,也给大家做个参考。 二维数组降维使用数组实例方法concat和ES6扩展运算符降维let arr=[...
收集整理的这篇文章主要介绍了JS数组降维的几种方法详解,觉得挺不错的,现在分享给大家,也给大家做个参考。 二维数组降维
使用数组实例方法concat和ES6扩展运算符降维
let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能console.LOG(arr1); // [1, 2, 3, 4, 5]//ES6之前用apply打散数据的兼容性写法VAR arr2=[1,2,[3,4],5]; var arr3=[].concat.apply([],arr2); console.log(arr3); // [1, 2, 3, 4, 5]
多维数组降维
递归降维
//几种利用数组函数递归降维的写法//some& concat//利用some检查数组中是否含有数组有就在调用自己进行降维function fun(arr){ arr=[].concat(...arr); //再检查降维后的数组中是否还包含子数组 let hasArray=arr.some(function(elem){ return Array.isArray(elem); } ) if(hasArray){ //如果包含子数组 arr=fun(arr); //就只能再降维一次,直到检查不再包含子数组为止 } return arr; } ; //foreach& instanceof//对数组每个元素进行判断看其是不是数组是在继续调用自己,不是把他放进提前准备的空数组中 function fun2(arr){ let ret = []; let toArr = function(arr){ arr.forEach(function(ITem){ item instanceof Array ? toArr(item) : ret.push(item); } ); } toArr(arr); return ret; } //reduce& concat//最后准备一个空数组,看传入数组中的每一项是不是数组是就重新调用自己不是就用concat汇总到空数组中function fun3(sarr){ return sarr.reduce((PRe,val)=> { return Array.isArray(val) ? pre.concat(fun3(val)): pre.concat(val) } ,[])}
Array.prototyPE.flat()
ES10 新增Array.prototype.flat(),用于将嵌套的数组打散,变成一维的数组。该方法返回一个新数组,对原数据没有影响。
var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4] var arr2 = [1, 2, [3, 4, [5, 6]]]; arr2.flat(); // [1, 2, 3, 4, [5, 6]] var arr3 = [1, 2, [3, 4, [5, 6]]]; arr3.flat(2); // [1, 2, 3, 4, 5, 6] //使用 Infinity 作为深度,展开任意深度的嵌套数组arr3.flat(Infinity); // [1, 2, 3, 4, 5, 6]
到此这篇关于JS数组降维的几种方法的文章就介绍到这了,更多相关JS数组降维内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:- js最全的数组的降维5种办法(小结)
- JS数组降维的实现Array.prototype.concat.apply([], arr)
- JavaScript实现数组降维详解
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JS数组降维的几种方法详解
本文地址: https://pptw.com/jishu/595172.html