2017-01-17 6 views
0

ich zwei Arrays mit Objekten mit unterschiedlichen Schlüsselnamen vergleichen will mit Strich ...Underscore.js - Vergleichen Sie zwei Arrays mit Objekten

array1 = [{email:"[email protected]", first_name:"asad"}, {email:"[email protected]", first_name:"name1"}] 

array2 = [{email2:"[email protected]", first_name2:"asad"}, {email2:"[email protected]", first_name2:"name22"}] 

Ausgabe des einzigartigen E-Mail-IDS von array2 wollen, die in array1 wie diese nicht vorhanden ist ...

array3 = [{email2:"[email protected]", first_name2:"name22"}] 

Antwort

2

array1 mit den E-Mail-Adressen als Schlüssel zu einem Objekt konvertieren, dann filtern array2 basierend auf, dass:

var t = {}; 
angular.forEach(array1, function(v) { t[v.email] = 1 }); 
var array3 = array2.filter(
    function (v) { 
     return angular.isUndefined(t[v.email2]); 
    }); 

Entschuldigung, underscorejs wird hier nicht benötigt.

Oder wenn Sie moderne JS Syntax verwenden können es liest ein wenig sauberer:

var t = {}; 
array1.forEach(v => t[v.email] = 1); 
var array3 = array2.filter(v => angular.isUndefined(t[v.email2])); 
+0

Danke .... Es funktioniert .... jetzt weiß ich, warum Sie diese bekam = 42.9k –

Verwandte Themen