javascript - 这段代码如何找到两个对象数组之间的差异?
问题描述
我已经从 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
?
解决方案
我想说理解它的最好方法是使用一些老式的香草 JS 进行重构:
const results = arrayOne.filter(objectOne => {
return !arrayTwo.some(objectTwo => {
return objectOne.value === objectTwo.value;
})
});
这里我没有使用对象解构,也没有使用省略return
关键字,它使事情更加清晰。
推荐阅读
- python - 打印父数据以及嵌套 JSON 的子数据
- php - 对使用 PHP 打印关联数组的结果感到困惑
- node.js - NodeJS:关于异步“readdir”和“stat”的混淆
- php - 从 URL 检索信息
- ios - 滚动时自定义 UITableViewCell 获取错误属性
- visual-studio - GENERATEFAKES 因 CS0234 而失败
- javascript - 查询中的 Firebase StartAfter 未按预期工作
- wordpress - 在 wordpress 中通过 add_query_arg() 获取热门帖子链接
- java - Android:将 JSONObject 转换为 JSONArray 返回 null
- javascript - 如何围绕一个形状移动