美文网首页
js数组降维

js数组降维

作者: acsamson | 来源:发表于2019-04-05 11:03 被阅读0次

    二维数组降一维

    先看代码:

    推荐直接使用apply()数组中的每一个元素(还是数组,二维数组的第二维)会被作为参数依次传入到concat中,等同于[].concat([0,0,1],[2,3,3],[4,4,5])

    // 方法一
    var arr = [[0,0,1],[2,3,3],[4,4,5]];
    console.log([].concat.apply([], arr)); // ==> [0, 0, 1, 2, 3, 3, 4, 4, 5]
    
    // 方法二: 但是会转为字符串, 但是该方法适用于多维数组降维一维
    var arr = [[0,0,1],[2,3,3],[4,4,5]];
    arr.join(); // ==> "0,0,1,2,3,3,4,4,5"
    console.log(arr.join().split(','));
    

    注意这里的concat没有括号, 如果要用到有()的concat就要可以写成如下:

    var arr = [[0,0,1],[2,3,3],[4,4,5]];
    var newArr = [];
    for(var i = 0; i < arr.length; i++){
        newArr = newArr.concat(arr[i]);
    }
    console.log(newArr); // ==> [0, 0, 1, 2, 3, 3, 4, 4, 5]
    

    并且该方法不适用于多维数组, 因为如下:

    var arr1 = [1,[2,[[3,4],5],6]];
    console.log([].concat.apply([], arr1)); // ==> [1, 2, Array(2), 6]
    

    多维数组降维一维数组

    先看代码:

    // 和二维数组有一个通用方法就是用, join, 会转为字符串
    var arr = [1,[2,[[3,4],5],6]];
    arr.join() // ==> "1,2,3,4,5,6"
    console.log(arr.join().split(',')); 
    

    当然也可以新建一个空的数组然后放进去, 是一种递归的方法

    var arr = [1,[2,[[3,4],5],6]];
    var newArr = [];
    
    function fu(arr){
        for(var i=0;i<arr.length;i++){
            // 递归判断是不是数组, 是的话就递归处理
            if(Array.isArray(arr[i])){
                fu(arr[i]);
            }else{
                newArr.push(arr[i]);
            }
        }
    }
    fu(arr);
    console.log(newArr);//[1, 2, 3, 4, 5, 6]
    

    相关文章

      网友评论

          本文标题:js数组降维

          本文链接:https://www.haomeiwen.com/subject/gayhiqtx.html