javascript - 两个对象数组的打字稿差异
问题描述
我有两个对象数组,想找到第二个数组中缺少但属于第一个数组的项目,基本上是array1-array2。我尝试使用过滤器,但无法获得所需的结果。请帮忙。提前致谢。
这是代码:
testData=[
{id: 0, name: "policy001"},
{id: 2, name: "policy002"}];
sourceData= [
{id: 0, name: "policy001"},
{id: 2, name: "policy002"},
{id: 3, name: "policy003"},
{id: 4, name: "policy004"},
{id: 5, name: "policy005"},
];
let missing = sourceData.filter(item => testData.indexOf(item) < 0);
console.log("Miss")
console.log(missing )//Returns the sourceData instead of diff.
解决方案
您的代码不起作用的原因是数组中的对象是对象的“地址”。所以当然 indexOf 没有工作
试试下面:
let missing = sourceData.filter(a => !testData.find(b => a.id === b.id));
推荐阅读
- c# - 为什么我的正则表达式没有转义这个反斜杠?
- sql - 如何从长达一年的时间表创建单独的航班条目?
- javascript - 是否可以在类中的 this.var 上设置 Object.defineProperty()
- python - 如何从 pytorch 类中的 pandas 列中读取图像
- regex - 如何在 Bash 中匹配符号?
- mysql - 将数据库附加到 Web 容器时,Docker 数据库连接被拒绝错误
- python - 验证 url 并编译 subreddits 的工作列表
- ios - 根据 UISwitch 状态在我的主滚动视图上添加更多 tableViews 作为子视图仅在应用程序重新启动后才有效
- python - 当我调用 logging.config.fileConfig 时,日志系统多次失败
- excel - 主要和次要 y 轴上的数据颜色相同