JavaScript实现数据去重

本文介绍了两种JavaScript实现数据去重的方法,包括利用indexOf和forEach的遍历比较,以及利用对象属性唯一性的特性进行去重。
摘要由CSDN通过智能技术生成

利用indexOf 和 forEach 实现

Array.prototype.distinct = function(){
    var arr = this, result = [];
    arr.forEach(function(item,index,arr){
        var bool = arr.indexOf(item, index+1)
        //indexOf的第二个参数是重点,没有这个参数,这个效果就实现不了
        //它代表的是下次查询从哪里开始,如果省略,会从下标0开始
        if(bool === -1){
            result.push(item);
        }
    })
    return result;
}
var a = [1,1,1,2,2,2,3,3,3,4,4,4,1,2,3,4]
var b = a.distinct();
console.log(b);

利用对象属性不同的特性实现

Array.prototype.distinct1 = function(){
    var arr = this, i, result = [], obj = {},len = arr.length;
    for(i=0;i<len;i++){
        if(!obj[arr[i]]){
            obj[arr[i]] = 1;
            //给不同的属性名都赋值为1,结果是这样
            //obj{1:1,2:1,3:1,4:1……}
            //如果省略这句话也会没效果
            result.push(arr[i]);
        }
    }
    return result;
}

var a = [1,2,3,4,2,3,1,3,4,5,6,1,1,1,1,1]
var b = a.distinct1();
console.log(b.toString())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值