首页 > 编程语言 > 详细

数组扁平化的几种方法

时间:2021-09-05 16:02:42      阅读:27      评论:0      收藏:0      [点我收藏+]

1.遍历数组

定义数组并进行遍历,判断如果是基本数据类型,直接push到新数组,如果是数组,concat中递归调用;

 1 var arr=[1,2,3,[4,5,[6,7]]];
 2 function Fun(arr){
 3   var resArr=[];
 4   for(var i=0;i<arr.length;i++){
 5     if(Array.isArray(arr[i])){  
 6       resArr=resArr.concat(add(arr[i]));
 7     }else{
 8       resArr.push(arr[i]);
 9     } 
10   }
11   return resArr;
12 }

2.reduce+concat

reduce初始化一个空数组,如果是基本数据类型,直接concat到结果中,如果是数组递归调用,最后返回结果数组;

 

1 function Fun(arr) {
2   return arr.reduce((res, item) => {
3     return res.concat(Array.isArray(item) ? add(item) : item);
4   }, []);
5 }

 

3.展开运算符+while循环

ES6中展开运算符...和while循环,条件体中使用some函数判断是否为数组,是执行循环体,将所有数组展开concat到新数组中,最后返回结果数组;

 

1 function Fun(arr){
2   while(arr.some(item=>Array.isArray(item))){
3     arr=[].concat(...arr);
4   }
5   return arr
6 }

4.flat函数

ES6中的flat(Infinity),原理:递归遍历数组,并将所有元素与遍历到的子数组合并为一个新的数组返回;

1 arr=arr.flat(Infinity);

5.toString()或join()结合split()

toString()或者join(),结合split(),先转化为字符串,再通过map生成数组返回;

1 function add(arr) {
2   return arr.toString().split(",").map(item => {
3     return Number(item)
4   })
5 }

 

数组扁平化的几种方法

原文:https://www.cnblogs.com/Mochenghualei/p/15227498.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!