如何在JavaScript中获取两个对象数组之间的差异 [英] How to get the difference between two arrays of objects in JavaScript
本文介绍了如何在JavaScript中获取两个对象数组之间的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个这样的结果集:
I have two result sets like this:
// Result 1
[
{ value="4a55eff3-1e0d-4a81-9105-3ddd7521d642", display="Jamsheer" },
{ value="644838b3-604d-4899-8b78-09e4799f586f", display="Muhammed" },
{ value="b6ee537a-375c-45bd-b9d4-4dd84a75041d", display="Ravi" },
{ value="e97339e1-939d-47ab-974c-1b68c9cfb536", display="Ajmal" },
{ value="a63a6f77-c637-454e-abf2-dfb9b543af6c", display="Ryan" }
]
// Result 2
[
{ value="4a55eff3-1e0d-4a81-9105-3ddd7521d642", display="Jamsheer"},
{ value="644838b3-604d-4899-8b78-09e4799f586f", display="Muhammed"},
{ value="b6ee537a-375c-45bd-b9d4-4dd84a75041d", display="Ravi"},
{ value="e97339e1-939d-47ab-974c-1b68c9cfb536", display="Ajmal"}
]
我需要的最终结果是这些数组之间的差异 - 最终结果应该像这个:
The final result I need is the difference between these arrays – the final result should be like this:
[{ value="a63a6f77-c637-454e-abf2-dfb9b543af6c", display="Ryan" }]
是否可以做在JavaScript中这样的东西?
Is it possible to do something like this in JavaScript?
推荐答案
只使用原生JS,这样的东西会起作用:
Using only native JS, something like this will work:
a = [{ value:"4a55eff3-1e0d-4a81-9105-3ddd7521d642", display:"Jamsheer"}, { value:"644838b3-604d-4899-8b78-09e4799f586f", display:"Muhammed"}, { value:"b6ee537a-375c-45bd-b9d4-4dd84a75041d", display:"Ravi"}, { value:"e97339e1-939d-47ab-974c-1b68c9cfb536", display:"Ajmal"}, { value:"a63a6f77-c637-454e-abf2-dfb9b543af6c", display:"Ryan"}]
b = [{ value:"4a55eff3-1e0d-4a81-9105-3ddd7521d642", display:"Jamsheer", $$hashKey:"008"}, { value:"644838b3-604d-4899-8b78-09e4799f586f", display:"Muhammed", $$hashKey:"009"}, { value:"b6ee537a-375c-45bd-b9d4-4dd84a75041d", display:"Ravi", $$hashKey:"00A"}, { value:"e97339e1-939d-47ab-974c-1b68c9cfb536", display:"Ajmal", $$hashKey:"00B"}]
function comparer(otherArray){
return function(current){
return otherArray.filter(function(other){
return other.value == current.value && other.display == current.display
}).length == 0;
}
}
var onlyInA = a.filter(comparer(b));
var onlyInB = b.filter(comparer(a));
result = onlyInA.concat(onlyInB);
console.log(result);
这篇关于如何在JavaScript中获取两个对象数组之间的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文