2016-11-02 7 views
0

Ich habe ein Array von Objekten wie:lodash uniqWith mit einer Reihe von Objekten

[{id: '123', name: 'John', someKey:'1234'}, {id: '123', name: 'John', someKey:'12345'}]

dies ist nur ein einfaches Beispiel ist die Daten viel komplizierter, so ist _.isEqual nicht.

Was mache ich mit dem Komparator? Ich möchte die id vergleichen, wenn sie gleich sind.

_.uniqWith(myArray, function(something) {return something})

+1

Ori Antwort die richtige für uniqWith ist. Es könnte auch mit [uniqBy] (https://lodash.com/docs/4.16.6#uniqBy) gelöst werden: 'var result = _.uniqBy (Daten, 'id)' –

+0

@GruffBunny - fügte es der Antwort hinzu . –

Antwort

4

Vergleichen Sie die IDs in der _.uniqWith() Komparatorfunktion oder _.uniqBy() verwenden:

var myArray = [{ 
 
    id: '123', 
 
    name: 'John', 
 
    someKey: '1234' 
 
}, { 
 
    id: '123', 
 
    name: 'John', 
 
    someKey: '12345' 
 
}] 
 

 
var result = _.uniqWith(myArray, function(arrVal, othVal) { 
 
    return arrVal.id === othVal.id; 
 
}); 
 

 
console.log(result); 
 

 
/** using uniqBy **/ 
 

 
var result = _.uniqBy(myArray, 'id'); 
 

 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"></script>

+0

ah danke. Ich wusste nicht, dass es zwei Params akzeptiert – Jan

+0

Gern geschehen :) –

Verwandte Themen