【发布时间】:2018-09-28 13:23:41
【问题描述】:
我有两个数组。我合并它并删除重复项。合并是通过考虑数组的所有键来完成的(数组 1 中对象中的所有键值必须与数组 2 中的键值匹配)。
var result1 = [{
name: 'Sandra',
email: 'sandra@example.com'
},
{
name: 'John',
email: 'johnny@example.com'
},
{
name: 'Peter',
email: 'peter@example.com'
},
{
name: 'Bobby',
email: 'bobby@example.com'
},
{
name: 'Arun',
email: 'arun@gmail.com'
},
];
var result2 = [{
name: 'John',
email: 'johnny@example.com'
},
{
name: 'Bobby',
email: 'bobby@example.com'
},
{
name: 'Arun',
email: 'arun@example.com'
}
];
var result= _.uniqWith(_.concat(result1, result2), _.isEqual)
现在我需要用 array1 和 array2 的每一项检查合并数组的每一项,并更新合并数组是否存在。
所以我的最终结果应该是这样的。
var result = [{
name: 'Sandra',
email: 'sandra@example.com',
presentInA: true,
presentInB: false
},
{
name: 'John',
email: 'johnny@example.com',
presentInA: true,
presentInB: true
},
{
name: 'Peter',
email: 'peter@example.com',
presentInA: true,
presentInB: false
},
{
name: 'Bobby',
email: 'bobby@example.com',
presentInA: true,
presentInB: true
},
{
name: 'Arun',
email: 'arun@example.com',
presentInA: false,
presentInB: true
},
{
name: 'Arun',
email: 'arun@gmail.com',
presentInA: true,
presentInB: false
}
];
我该如何以最好的方式做到这一点?我想我可以通过遍历所有 3 个数组来做到这一点,但这样做是一种糟糕的方式。
请指教。
【问题讨论】:
-
是的,我们也可以做jquery
-
抱歉,我看到问题是lodash就删除了。
-
不,它可以匹配,但如果匹配,我需要检查整个对象。
标签: javascript arrays object lodash