将嵌套的数组扁平化

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

function parseArr(arr,res){
    var i=0;
    for(i=0;i<arr.length;i++){
        if(arr[i] instanceof Array){
            parseArr(arr[i],res);
        }else{
            res.push(arr[i]);
        }
    }
}
var a=[1,[2,[3,4]],5,6];
var res=[];
parseArr(a,res);
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

方法二: 使用toString先变成一个字符串再使用split变成一个字符串数组(数组中的每个元素是一个字符串),最后使用map方法将数组中的每个元素返回为非字符串。

var arr=a.toString().split(',').map(function(ele){
    return +ele;
});
alert(typeof arr[0]);  //number
    
    
  • 1
  • 2
  • 3
  • 4

方法三: 使用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();
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

参考资料:
前端面试:将嵌套的js数组转化为一维数组的许多种办法

三种常用的js数组去重方法

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

function parseArr(arr,res){
    var i=0;
    for(i=0;i<arr.length;i++){
        if(arr[i] instanceof Array){
            parseArr(arr[i],res);
        }else{
            res.push(arr[i]);
        }
    }
}
var a=[1,[2,[3,4]],5,6];
var res=[];
parseArr(a,res);
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

方法二: 使用toString先变成一个字符串再使用split变成一个字符串数组(数组中的每个元素是一个字符串),最后使用map方法将数组中的每个元素返回为非字符串。

var arr=a.toString().split(',').map(function(ele){
    return +ele;
});
alert(typeof arr[0]);  //number
  
  
  • 1
  • 2
  • 3
  • 4

方法三: 使用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();
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

参考资料:
前端面试:将嵌套的js数组转化为一维数组的许多种办法

三种常用的js数组去重方法

猜你喜欢

转载自blog.csdn.net/chenjuan1993/article/details/81986800
今日推荐