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

时间:2017-01-17 09:07:07

标签: angularjs underscore.js

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

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

1 个答案:

答案 0 :(得分:2)

array1转换为电子邮件地址为关键字的对象,然后根据该对象过滤数组:

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