手机版

js嵌套数组展平:将多维数组转换为一维数组 并解释push()和concat()之间的区别

时间:2021-08-27 来源:互联网 编辑:宝哥软件园 浏览:

展平数组:将多维数组更改为一维数组

对于这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想把它变成一维数组,有几种方法:

方法1:递归1

函数parser arr(arr,RES){ var I=0;for(I=0;长度;I){ if(arr[I]instance of Array){ parser arr(arr[I],RES);} else { RES . push(arr[I]);} }}var a=[1,[2,[3,4]],5,6];var RES=[];parseArr,RES);递归二(推荐)

var arr=['mu ',' zi ',['dig ',['big ',' love']]函数扁平化(arr){ var RES=[];for(var I=0;长度;I){ if(array . isarray(arr[I]){ RES=RES . concat(扁平化(arr[I]);} else { RES . push(arr[I]);} }返回res} console.log (flat (arr))//['mu ',' zi ',' dig ',' big ',' love']分析上述方法:

1.语法是:array.isarray(对象);参数:需要对象。要测试的对象。

返回值

真;如果对象是数组;否则,假的。如果对象参数不是对象,则返回false。

2.2.push()和concat()之间的区别

1、push()是在原数组的基础上修改的,执行push()方法后,原数组的值也会发生变化,在原数组后增加值;如果concat()是由数组操作的,那么首先将原始数组的每个值复制到新的/另一个数组中,然后对新的/另一个数组进行操作,这样原始数组的值就不会改变。2.如果参数不是数组,push()和concat()将直接将参数添加到数组中,而不考虑参数的数量;如果参数是数组,push()会直接将数组添加到原始数组中,而concat()会取出数组中的值并将其添加到原始数组中。方法二:先用toString变成字符串,再用split变成字符串数组(数组中的每个元素都是字符串),最后用map方法将数组中的每个元素作为非字符串返回。

//arr数组中的元素不能是字符串,而只能是数组var new arr=arr.tostring()。拆分(',')。map(function(ele){ return ele;});console.log(newArr)警报(arr[0]类型);//数字模式3:使用toString()和split(',')方法

toString()

如果数组的元素都是数字,我们可以考虑使用toString方法,因为:toString以逗号的形式组合数组中的数字。

ToString()后跟split(',')被转换为数组并转换回数字数组:

var arr=[1,[2,[3,4],[5,[6],[7,8]]]];var arrStr=arr . ToString();console . log(arrStr);//1,2,3,4,5,6,7,8 var strArr=arrStr.split(',');Console.log (strarr)//['1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8']模式2和模式3的场景只适用于数组中所有数字都转换成字符串的情况。

方法4 :使用减少和连接方法

array . prototype . flat=function(){ return this . reduce(function(prev,cur)){ var more arr=[]。concat(cur)。一些(array . isarray);//判断cur是否为数组返回prev.concat(moreArr?cur . flat(): cur);},[]);};var arr=a . flat();//合并二维数组var twoarr=[['mu ',' zi'],['dig ',' big'],['lucky ',' jiji ']];var oneArr=twoArr.reduce(函数(total,currentValue){//console . log(total)返回total . concat(currentValue);})console . log(oneArr);//['mu ',' zi ',' dig ',' big ',' lucky ',' jiji'] reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始减少,最后计算为一个值。

Reduce()可以用作组合函数的高阶函数。

请注意, reduce()不会对空数组执行回调函数。

var arr=[1,2,3,4,5,6,7,8,9,10] var str=arr.reduce(函数(prev,cur,index,arr){ return prev cur;}) console.log(str)//55模式5: es6扩展运算符

函数扁平化(arr){ while(arr . some(item=array . isarray(item)){ arr=[]。concat(.arr);}返回arr}因为扩展运算符一次只能扩展一层数组:

var arr=[1,[2,[3,4]]];console.log([])。concat(.arr));//[1,2,[3,4]]因此,只要数组中有数组,就使用扩展运算符将其展开一次。

如果有任何不足,请给我你的建议!希望给大家带来帮助!

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接

版权声明:js嵌套数组展平:将多维数组转换为一维数组 并解释push()和concat()之间的区别是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。