最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解

来源:动视网 责编:小采 时间:2020-11-27 22:01:54
文档

js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解

js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解:数组的扁平化:将多维数组变成一维数组 对于一个像这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想要把它变成一个一维数组,有下面几种方法: 方法一:递归一 function parseArr(arr,res){ var i=0; for(i=0;i<arr.length;i++)
推荐度:
导读js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解:数组的扁平化:将多维数组变成一维数组 对于一个像这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想要把它变成一个一维数组,有下面几种方法: 方法一:递归一 function parseArr(arr,res){ var i=0; for(i=0;i<arr.length;i++)


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"]

方式二和方式三  的场景只适用于数组内全部是数字的情况,因为中间是全部转换为字符串了。

方法四: 使用reduce和concat方法

Array.prototype.flatten=function(){
 return this.reduce(function(prev, cur) {
 var moreArr = [].concat(cur).some(Array.isArray); //判断cur是不是一个数组
 return prev.concat(moreArr ? cur.flatten() : cur);
 },[]);
};
var arr=a.flatten();
 //合并二维数组
 var twoArr = [['mu','zi'],['dig','big'],['lucky','jiji']];
 var oneArr = twoArr.reduce(function(total,currentValue){
 // console.log(total)
 return total.concat(currentValue);
 })
 console.log(oneArr);//["mu", "zi", "dig", "big", "lucky", "jiji"]

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的。

 var arr = [1,2,3,4,5,6,7,8,9,10]
 var str = arr.reduce(function(prev,cur,index,arr){
 return prev + cur ;
 })
 console.log(str)//55

方式五:es6扩展运算符

function flatten(arr){
 while(arr.some(item=>Array.isArray(item)){
 arr = [].concat(...arr);
 }
 return arr;
}

由于扩展运算符一次只能展开一层数组:

var arr = [1, [2, [3, 4]]];
console.log([].concat(...arr)); // [1, 2, [3, 4]]

因此考虑只要数组中还有数组,就使用扩展运算符展开一次。

若有不足请多多指教!希望给您带来帮助!

总结

文档

js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解

js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解:数组的扁平化:将多维数组变成一维数组 对于一个像这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想要把它变成一个一维数组,有下面几种方法: 方法一:递归一 function parseArr(arr,res){ var i=0; for(i=0;i<arr.length;i++)
推荐度:
标签: 数组 concat 数组的
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top