Objete löschen, die doppelt vorhanden sind

floraoma2000

Grünschnabel
Hallo,

Habe folgendes:
Javascript:
[{wert:"111", city:"Los Angelos"},{wert:"112", city:"New York"},{wert:"111", city:"Los Angelos"},{wert:"115", city:"Dallas"}]
Nun möchte ich die doppelten Objete löschen. Ist der "wert" schon da, dann lösche den Eintrag.
Das Ergebnis sollte sein
Javascript:
[{wert:"111", city:"Los Angelos"},{wert:"112", city:"New York"},{wert:"115", city:"Dallas"}]

Wie mache ich das? stehe auf dem Schlauch?
Danke
 
Ein Weg ist es die "Duplikate" zu finden und nur die "Originale"zu speichern.

Ich habe hier in meinen Beispiel es an dem "wert" festgemacht, um die Duplicate zu finden.
Es ist aber genauso Möglich die Duplikate anhand der "city" oder anhand der Kombination von "wert" und "city" zu finden.

Javascript:
var ELEMENTS = [{wert:"111", city:"Los Angelos"},{wert:"112", city:"New York"},{wert:"111", city:"Los Angelos"},{wert:"115", city:"Dallas"}];
var CLEANED_ELEMENTS = cleanArray( ELEMENTS );
 
console.dir( ELEMENTS );
console.dir( CLEANED_ELEMENTS );

function cleanArray( OriginArray ) {
   var BUFFER = [];
   var DUPLICATES = [];
     
   OriginArray.forEach( function( currentValue, index, array ) {
      if( DUPLICATES.indexOf( index ) < 0 ) {
         DUPLICATES = DUPLICATES.concat( findDuplicate( currentValue, E ) );
      }
   });
     
   OriginArray.forEach( function( currentValue, index, array ) {
      if( DUPLICATES.indexOf( index ) < 0 ) {
         BUFFER[BUFFER.length] = currentValue;
      }
   });
     
   return BUFFER;
}
 
function findDuplicate( originElement, OriginArray ) {
   var BUFFER = [];
     
   OriginArray.forEach( function( currentValue, index, array ) {
      if( originElement !== currentValue && originElement.wert == currentValue.wert ) {
         BUFFER[BUFFER.length] = index;
      }
   } );
     
   return BUFFER;
}

Ich hoffe dir hilft das soweit. :)
 
Zurück