日期:2014-05-16  浏览次数:20388 次

JSON数据中,可能会有相同的重复记录,在JS中怎么排重呢?
比如,JSON如下: {"id":"1231"}, {"id":"9387"}, {"id":"68433"}, {"id":"1231"}, {"id":"43566"}

这个需要怎么处理,来进行把重复的二个数据,排重为一条呢?

------解决方案--------------------
JScript code
Array.prototype.removeRepeatAttr=function(){
    var tmp={},b=[],a=this; 
    for(var i=0;i<a.length;i++){
        if(!tmp[a[i].id]){
            b.push(a[i]);
            tmp[a[i].id]=!0;
        }
    };
    return b;
}
var a=[{"id":"1231"}, {"id":"9387"}, {"id":"68433"}, {"id":"1231"}, {"id":"43566"}];
a=a.removeRepeatAttr();
for(var i=0;i<a.length;i++){
    alert(a[i].id)
}

------解决方案--------------------
修正一下那个扩展方法,使其作用于自身
JScript code
Array.prototype.removeRepeatAttr=function(){
    var tmp={},b=[],a=this; 
    for(var i=0;i<a.length;i++){
        if(!tmp[a[i].id]){
            tmp[a[i].id]=!0;
        }else{
            a.splice(i,1);
        }
    };
}
var a=[{"id":"1231"}, {"id":"9387"}, {"id":"68433"}, {"id":"1231"}, {"id":"43566"}];
a.removeRepeatAttr();
for(var i=0;i<a.length;i++){
    alert(a[i].id)
}

------解决方案--------------------
这个只能写算法排重