美文网首页前端知识
js数组去重的常用方法总结

js数组去重的常用方法总结

作者: Smallbore | 来源:发表于2017-01-11 17:07 被阅读109次

1.js数组去重的常用方法总结

1.第一种是比较常规的方法
思路:
1.构建一个新的数组存放结果
2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比
3.若结果数组中没有该元素,则存到结果数组中

Array.prototype.unique1 = function(){ var res = [this[0]]; 
    for(var i = 1; i < this.length; i++){ 
            var repeat = false;  
            for(var j = 0; j < res.length; j++){
               if(this[i] == res[j]){
                  repeat = true;    break;   
            }
            } if(!repeat){  
                res.push(this[i]);  
            } 
    } return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
console.log(arr.unique1());

2.**第二种方法比上面的方法效率要高
**
思路:
1.先将原数组进行排序
2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置
3.如果不相同,则将该元素存入结果数组中
4.注意:会有一定的局限性,因为在去重前进行了排序,所以最后返回的去重结果也是排序后的。如果要求不改变数组的顺序去重,那这种方法便不可取了

Array.prototype.unique2 = function(){
    this.sort(); //先排序
    var res = [this[0]];
    for(var i = 1; i < this.length; i++){
        if(this[i] !== res[res.length - 1]){
            res.push(this[i]);
        }
    }
    return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
console.log(arr.unique2());

3.**第三种方法(推荐使用)
**
思路:
1.创建一个新的数组存放结果
2.创建一个空对象
3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

Array.prototype.unique3 = function(){
    var res = [];
    var json = {};
    for(var i = 0; i < this.length; i++){
        if(!json[this[i]]){
            res.push(this[i]);
            json[this[i]] = 1;
        }
    }
    return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
console.log(arr.unique3());

4.第四种方法
思路:
1.创建一个新数组。
2.传成字符串 ,arr[i], 形式。
3.match查找匹配原数组中的字符,没有匹配成功,就加入。
4.完成后返回新数组。
5.看起来比较low。

var arr = ["1","1","2","2","3","3","4","4","你"]
    function toSort(arr){
        var rs = new Array();
        for(var i=0;i<arr.length;i++){
            var s = ","+rs.join(",")+",";
            if(!s.match(","+arr[i]+",")){
                rs.push(arr[i]);
            } 
        }
        return rs;
    }
console.log(toSort(arr).toString());

5.第五种方法
思路:
1.创建一个新数组。
2.传成字符串 ,arr[i], 形式。
3.indexOf查找匹配原数组中下标,没有匹配成功,就加入。
4.完成后返回新数组。
5.非常好记。

var arr = ["1","1","2","2","3","3","4","4","你"]
function arr(arr){
    var result = [];
    for(var i = 0;i<arr.length;i++){
        if(result.indexOf(arr[i])==-1){
            result.push(arr[i])
        }
    }
    console.log(result);
}

相关文章

  • 5.18 总结

    1 数组去重 js数组去重的常用方法总结 2 定时器的返回值是定时器的编号 定时器的执行;(全部js代码执...

  • js数组去重的常用方法总结

    1.js数组去重的常用方法总结 1.第一种是比较常规的方法思路:1.构建一个新的数组存放结果2.for循环中每次从...

  • 前端开发备忘录

    js 数组去重的方法 最常用的方式 对象键值法去重 es6 Set方法一键去重 js常见的循环与遍历以及不同循...

  • 数组

    数组 数组常用方法 数组去重

  • [js][实战][去重][总结] - 运用es6优化js数组去重

    原文出自本人博客:js去重的几种常用方法 总结在前 在项目中进行array去重常用有一下几种方法。 1.使用for...

  • JavaScript数组去重

    JavaScript中数组的常用操作之数组去重 方法一 方法二

  • 数组去重

    分类 非对象数组去重 对象数组去重 分类一 --- 非对象数组去重 方法一: set(es6常用) 方法二:red...

  • js数组去重方法的总结

    一般大公司面试的时候,都会问一些常见的问题,但是这些问题看着简单,面试官问了怎么解决后,你说了一种,面试官又问还有...

  • JS 中常用的数组去重方法

    Set Set 是 ES2015 新增的一种数据结构,类似数组,Set 中的元素只会出现一次,即 Set 中的元素...

  • JS实现数组去重方法总结

    话不多说,我们这就进入正文。第一种:使用forEach从传入参数的下一个索引值开始寻找是否存在重复,如果不存在重复...

网友评论

    本文标题:js数组去重的常用方法总结

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