Javascript 这段代码如何查找两个对象数组之间的差异?
我已经根据SO的答案测试了这段代码,它基本上只返回数组1中存在的项,而数组2中不存在的项。但我不明白这是怎么回事,有人能解释一下吗Javascript 这段代码如何查找两个对象数组之间的差异?,javascript,node.js,ecmascript-6,ecma,Javascript,Node.js,Ecmascript 6,Ecma,我已经根据SO的答案测试了这段代码,它基本上只返回数组1中存在的项,而数组2中不存在的项。但我不明白这是怎么回事,有人能解释一下吗 const arrayOne = [ { value: "4a55eff3-1e0d-4a81-9105-3ddd7521d642", display: "Jamsheer" }, { value: "644838b3-604d-4899-8b78-09e4799f586f", display: "Muhammed" }, { value: "b6ee
const arrayOne = [
{ 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" },
];
const arrayTwo = [
{ 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"},
];
const results = arrayOne.filter(({ value: id1 }) => !arrayTwo.some(({ value: id2 }) => id2 === id1));
console.log(results);
我认为{value:id1}
是解构赋值,但它似乎在交换键和值???与id2===id1
有什么关系
{value:id1}
将属性分配给具有其他名称的变量({a:id,b}={a:10,b:20});
console.log(id);//10
console.log(a);//“uncaughtreferenceerror:a未定义”
我认为理解它的最好方法是使用一些老式的JS进行重构:
const results=arrayOne.filter(objectOne=>{
return!arrayTwo.some(objectTwo=>{
返回objectOne.value==objectTwo.value;
})
});
在这里,我没有使用对象解构,也没有省略return
关键字,它让事情变得更清楚了