javascript - 检查javascript中两个对象数组之间的区别
问题描述
我需要一些帮助。如何获得这种情况下的差异数组:
var b1 = [
{ id: 0, name: 'john' },
{ id: 1, name: 'mary' },
{ id: 2, name: 'pablo' },
{ id: 3, name: 'escobar' }
];
var b2 = [
{ id: 0, name: 'john' },
{ id: 1, name: 'mary' }
];
我想要不同的数组:
// [{ id: 2, name: 'pablo' }, { id: 3, name: 'escobar' }]
最优化的方法是怎样的?
我正在尝试过滤一个简化的数组..这条线上的东西:
var Bfiltered = b1.filter(function (x) {
return x.name !== b2.reduce(function (acc, document, index) {
return (document.name === x.name) ? document.name : false
},0)
});
console.log("Bfiltered", Bfiltered);
// returns { id: 0, name: 'john' }, { id: 2, name: 'pablo' }, { id: 3, name: 'escobar' } ]
谢谢,
机器人
解决方案
.Filter()
和.some()
功能会做的伎俩
var b1 = [
{ id: 0, name: 'john' },
{ id: 1, name: 'mary' },
{ id: 2, name: 'pablo' },
{ id: 3, name: 'escobar' }
];
var b2 = [
{ id: 0, name: 'john' },
{ id: 1, name: 'mary' }
];
var res = b1.filter(item1 =>
!b2.some(item2 => (item2.id === item1.id && item2.name === item1.name)))
console.log(res);
推荐阅读
- c - 在 C 中为浮点分配的内存大小
- python - 在 exec 内置函数中使用 return 语句是否合法?
- processing - 处理:将绘图循环运行到一个独立的线程中
- android - 从android中的另一个应用程序共享时如何检索链接?
- javascript - 无法使用 Selenium Webdriver (Node JS) 登录网站
- reactjs - 点击一个元素触发点击另一个元素
- javascript - Json 未在 FullCalendar 中加载
- python - AWS Lambda 中的 FFMPEG 只会输出 5 秒的转换视频
- python - 为什么即使我已指定我的链表遍历终止,我也会收到超时错误?
- amazon-web-services - 将 sql 转储文件从 EC2 复制到 RDS 数据库时出现“1046 No Database Selected”错误