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)
}

解决方案 »

  1.   

    修正一下那个扩展方法,使其作用于自身
    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)
    }
      

  2.   

    这个算法可以实现var a = [{"id":"1231"},{"id":"9387"},{"id":"68433"},{"id":"1231"},{"id":"43566"}];
    for(var i=0; i < a.length; i++) {
        for(var j=i+1; j < a.length; j++) {
            if(a[i].id == a[j].id) {
                a.splice(a[j],1);

            }
        }
    }for(var k=0; k < a.length; k++) {
    alert(a[k].id);     
    }
      

  3.   

    在2楼写的方法有缺陷,再次修正Array.prototype.removeRepeatAttr=function(){
        var tmp={},a=this.slice(); 
        for(var i=j=0;i<a.length;i++){
            if(!tmp[a[i].id]){
                tmp[a[i].id]=!0;
                j++;
            }else{
                this.splice(j,1);
            }
        };
    }
    var arr=[{"id":"1"}, {"id":"2"}, {"id":"1"}, {"id":"3"}, {"id":"2"}, {"id":"5"}, {"id":"3"}, {"id":"4"}, {"id":"2"}, {"id":"4"}];
    arr.removeRepeatAttr();//以下只是为了看效果,实际使用时直接操作arr即可
    var str='[',tpl='{"{0}","{1}"}';
    for(var i=0;i<arr.length;i++){
        for(var n in arr[i]){
            str+=tpl.replace('{0}',n).replace('{1}',arr[i][n]);
        }
    }
    str+=']';
    alert(str)