javascript - 按具有特定属性的数组对象过滤数组对象
问题描述
const arr1 = [
{id: 1, name: 'first'},
{id: 2, name: 'second'},
{id: 3, name: 'third'}
];
const arr2 = [
{id: 1, name: 'first', color: 'blue'},
{id: 2, name: 'second', color: 'red'}
];
我想arr1
按id
.arr2
结果应该是
result = [{id: 3, name: 'third}]
我试过了:
const arr1 = [
{id: 1, name: 'first'},
{id: 2, name: 'second'},
{id: 3, name: 'third'}
];
const arr2 = [
{id: 1, name: 'first', color: 'blue'},
{id: 2, name: 'second', color: 'red'}
];
const result = arr1.filter((item) => {
return arr2.some((value) => {
return value.id !== item.id
})
});
console.log(result);
但它的结果是
[
{id: 1, name: 'first'},
{id: 2, name: 'second'},
{id: 3, name: 'third'}
];
我认为我的逻辑几乎是正确的。
任何人都可以帮助解决这个简单的错误吗?
解决方案
使用这种方法,您需要寻找相同性并在查找时排除。
const
arr1 = [{ id: 1, name: 'first' }, { id: 2, name: 'second' }, { id: 3, name: 'third' }],
arr2 = [{ id: 1, name: 'first', color: 'blue' }, { id: 2, name: 'second', color: 'red' }],
result = arr1.filter(item => !arr2.some(value => value.id === item.id));
// ^ ^^^^
console.log(result);
推荐阅读
- javascript - 如何使用 puppeteer 获取在不同选项卡中打开的页面的 URL,或从“单击此处”链接中提取 URL?
- c++ - 无法使用 cURL 和 CreateProcess (tiny-process-library) 上传文件
- javascript - 在 TinyMce 编辑器中使用 Angular 11 中的路由创建链接
- visual-studio-code - 是否可以在 Visual Code Studio 中暂时关闭 tslint?
- asp.net - 如何修复此错误:提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server (ASP.NET) 的连接?
- serverless - Serverless Docker 错误`此错误可能表明 docker 守护程序未运行`
- django - JobPost' 对象没有属性 'job_type'
- elasticsearch - Elasticsearch 结果中长尾的百分比
- python - Python:如何一次将多个 x,y 坐标从 df 传递到函数中?
- c++ - 1.我的代码问题是,当我输入整数 75 和 100 时,它没有显示我想要的输出