js实现数组去重

定义一个新数组,判断旧数组中的元素是否在新数组中已存在

function unique(array){
    var n = [];
    for(var i = 0;i < array.length; i++){
        if(n.indexOf(array[i]) == -1) 
           n.push(array[i]);
    }
    return n;
}

对数组进行排序后,比较前后两个相邻元素

function unique(){
    var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
    var sortedArr = arr.sort(function(a,b){return a-b}); 
    var results = [];
    for (var i = 0; i < arr.length; i++) {
    if (sortedArr[i + 1] !== sortedArr[i]) {
        results.push(sortedArr[i]);
    }
}
return results;
}

根据对象的属性不重复

Array.prototype.unique = 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 = [2,4,66,55,33,55,3,4,4,32,2]
console.log(arr.unique())

利用对象字面量的key与value关联性

function distinct(arr) {
    var obj = {},
        i = 0,
        len = 0;
    if (Array.isArray(arr) && arr.length > 0) {
        for (i = 0; i < arr.length; i += 1) {
            obj[arr[i]] = arr[i];
        }
        return Object.keys(obj);  //返回对象的可枚举属性和方法的名称
    }
}
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
console.log(distinct(arr));

ES6新特性

Array.from(new set(array));

参考:https://segmentfault.com/q/1010000000262609

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容