2016-05-19 16 views
-1

私は上記のコードを使用しており、idに基づいてアイテムを削除しています
最大配列長に達したときにi + 1アイテムを比較しているときにidが定義されていません。 あなたの助けをお待ちしています....javascriptの配列から重複したオブジェクトを削除する方法

var arr = [{"id":"0-block-0","left":206.5,"top":0},{"id":"0-block-1","left":446.5,"top":0},{"id":"0-block-2","left":474.5,"top":16},{"id":"0-block-2","left":686.5,"top":0}]; 

    Expecting outout = [{"id":"0-block-0","left":206.5,"top":0},{"id":"0-block-1","left":446.5,"top":0},{"id":"0-block-2","left":686.5,"top":0}] 


    Array.prototype.unique = function(){          
     var passNum = this.length; 
     var _self = this; 
     // to repeat loops n*n times 
     while(passNum>0){  
      for(var i = 0;i<this.length;i++) {     
       if(this[i].id==this[i+1].id){ 
         var _indx = this.indexOf(this[i]); 
         this.splice(_indx,1);    
       }        
      }     
      passNum = passNum-1; 
     }   
     return this; 
    }; 
+0

なぜあなたは同じIDの2番目を取得しますか? –

+0

一意性を保証する通常の方法は、IDをセットに入れることです。 – Dave

答えて

関連する問題