时间:2021-05-26
使用数组实例方法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数组降维内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
数组的扁平化:将多维数组变成一维数组对于一个像这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想要把它变成一个一维数组,有下面几种方法:方法一:递归一
名称:二维数组的几种表示方法说明:常用的有以下几种二维数组的表示方法:(1)、第一种是普通的二维数组的表示方法。(2)、第二种是用一维数组来表示二维数组,从显示
在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据,用下面的几种方法都可以实现:1使用数组的方式,如下:JS函数返回多个值functiongetDa
使用new创建二维数组方法#includeusingnamespacestd;voidmain(){//用new创建一个二维数组,有两种方法,是等价的//一:i
二维数组遍历:思想:1.先将二维数组中所有的元素拿到2.再将二维数组中每个元素进行遍历,相当于就是在遍历一个一维数组第一种方法:双重for循环//遍历二维数组p