数组去重

今天专门腾时间对数组去重的问题进行了总结

1.es6 is very good  

 var arr = [1,2,3,8,5,4,9,6,"s",47,5,2,47,5,5,2,7];
      var index = new Set(arr)
      console.log(index)

 

 

2.es5中的indexOf

var arr = [1,1,2,3,3,3,3,4];
function find() {
var newarr = [];
for(var i = 0; i < arr.length; i++) {
if (newarr.indexOf(arr[i]) == -1 ) {
newarr.push(arr[i]);
}

}
console.log(newarr);
}
find(arr);

 

3.利用最简单的思想就是for循环,但是经过测试发现这种方法的去重效果特别差(如果有1000或10000个数)一次一次循环,不推介使用,在不同浏览器可以执行的时间不同

 

function sort1(arr) {
    var flag = 0;
    var result = new Array();
    for(var i = 0; i < arr.length; i++) {
        flag = 0;
        for(var j = 0; j < arr.length; j++) {
            if(result[j] == arr[i]) {
                flag = 1;break;
            }
        }
        if(flag == 0)
            result.push(arr[i]);
    }

    return result;
}

4.第三方类库

jQuery: $.unique
underscore: _.unique

5. filter和indexOf相结合的方法

let arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0, 2, 2, 3];
function unique(arr){
    return arr.filter((item, index, array) =>  array.indexOf(item) === index);
}
console.log(unique(arr)); // [1, "a", "b", "d", "e", 0, 2, 3]

先写这么多吧

 

posted @ 2018-10-24 17:20  Mrco7837  阅读(130)  评论(0编辑  收藏  举报