loading...

0

数组降维

javascript读完大概需要6分钟

  • 发布时间:2017-08-03 14:32 星期四
  • 刘伟波
  • 194
  • 更新于2018-02-07 15:52 星期三

方案一:递归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
arr=[[1,3,4,5],[2,3,5]];
    var arr1=[];
    function addNum(e){
    e.forEach(function(e){
        if(typeof(e)!="number"){
            e.forEach(function(e){
                addNum(e);
            })
        }else{
            arr1.push(e);
        }  
        })
         
    }
     arr.forEach(function(e){
    addNum(e);
     });
console.log(arr1);   

简单的维度还可以,但是数组维度变得很多的情况下,递归不见得很好用啊?

方案二:数组的特殊处理

arr=[2,3,3,4,[2,3,4,[13,3,[3,4,6],4]]]; 

arr=""+arr;    //也可以toString()方法,这里对数组进行处理console.log(arr);      //2,3,3,4,2,3,4,13,3,3,4,6,4   //string

arr=arr.split(",");   

console.log(arr);      //["2", "3", "3", "4", "2", "3", "4", "13", "3", "3", "4", "6", "4"]  //array

var arr1=[];

for(var i=0;i<arr.length;i++){   arr1[i]=eval(arr[i]);};//newArr[i]=Number(newArr[i]);

console.log(arr1);     //[2, 3, 3, 4, 2, 3, 4, 13, 3, 3, 4, 6, 4]; 




var arr = [1,[2,[[3,4],5],6]];
var newArr = [];
    
function fun(arr){
        for(var i=0;i<arr.length;i++){
            if(Array.isArray(arr[i])){
                fun(arr[i]);
            }else{
                newArr.push(arr[i]);
            }
        }
    }
fun(arr);
console.log(newArr);//[1, 2, 3, 4, 5, 6]


你可能感兴趣的文章

    发表评论

    评论支持markdown,评论内容不能超过500字符,如果内容过多或者要及时回复,建议去 平台,一般一天之内就会回复。
    关于技术问题或者有啥不懂的都可以留言,我会定期回复答 疑,推荐最新仓库 前端知识体系, 感謝支持!