Underscorejs - 将两个数组与对象进行比较

Underscorejs - Compare two arrays with objects

我想使用下划线比较两个数组和具有不同键名的对象...

array1 = [{email:"revosys@gmail.com", first_name:"asad"}, {email:"email1@gmail.com", first_name:"name1"}]

array2 = [{email2:"revosys@gmail.com", first_name2:"asad"}, {email2:"info@data.com", first_name2:"name22"}]

想要从 array2 中输出唯一的电子邮件 IDS,它不存在于 array1 中...

array3 = [{email2:"info@data.com", first_name2:"name22"}]

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]));