2017-01-17 5 views
0

Я хочу, чтобы сравнить два массива с объектами с разными названиями клавиша, используя подчеркивание ...Underscorejs - Сравнить два массива с объектами

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"}] 

Want Вывода уникального IDS электронной почты из массив2, который не присутствует в array1, как это ...

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

ответ

2

array1 Преобразование в объект с адресами электронной почты в качестве ключей, затем процеживают array2 на его основе:

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

К сожалению, underscorejs здесь не нужен.

Или, если вы можете использовать современный синтаксис JS читает немного более чисто:

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

СПАСИБО .... Это работает .... Теперь я знаю, почему вы получили эти = 42.9k –