Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这段代码如何查找两个对象数组之间的差异?_Javascript_Node.js_Ecmascript 6_Ecma - Fatal编程技术网

Javascript 这段代码如何查找两个对象数组之间的差异?

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

我已经根据SO的答案测试了这段代码,它基本上只返回数组1中存在的项,而数组2中不存在的项。但我不明白这是怎么回事,有人能解释一下吗

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
    关键字,它让事情变得更清楚了