我必须从状态数据表单中获取一组 Json
objetSet1:
{id: 12, name: 'Foo Bar', email: 'foo@bar.com'},
{id: 23, name: 'Bar Foo', email: 'bar@foo.com'},
{id: 61, name: 'Barbell', email: 'barbell@mail.com'},
{id: 45, name: 'Joe Ocean', email: 'joe@ocean.com'}
objectSet2:
{ObjectId:15, name: 'someone', email: 'someone@mail.com'},
{ObjectId: 23, name: 'sometwo', email: 'sometwo@mail.com'},
{ObjectId: 72, name: 'seven ', email: 'seven@mail.com'},
{ObjectId: 23, name: 'five ', email: 'five@mail.com'}
我实际上正在寻找一种方法来使这个表达式变得动态
objectSet2 = objectSet2.filter(object => object.ObjectId === '23')
不是23个静态值,而是objectSet1对应的值
结果应包含 ID 出现在第一个对象集中的项目
预期输出:
objectSet2:
{ObjectId: 23, name: 'sometwo', email: 'sometwo@mail.com'},
{ObjectId: 23, name: 'five ', email: 'five@mail.com'}
最佳答案
Yy 很接近,只需要添加一个新的过滤器,如下所示:
objetSet1 = [{id: 12, name: 'Foo Bar', email: 'foo@bar.com'},
{id: 23, name: 'Bar Foo', email: 'bar@foo.com'},
{id: 61, name: 'Barbell', email: 'barbell@mail.com'},
{id: 45, name: 'Joe Ocean', email: 'joe@ocean.com'}];
objectSet2 = [{ObjectId:15, name: 'someone', email: 'someone@mail.com'},
{ObjectId: 23, name: 'sometwo', email: 'sometwo@mail.com'},
{ObjectId: 72, name: 'seven ', email: 'seven@mail.com'},
{ObjectId: 23, name: 'five ', email: 'five@mail.com'}];
var result = objectSet2.filter((obj2)=>objetSet1.filter((obj1)=>obj1.id==obj2.ObjectId).length>0)
console.log(result);
请注意obj1.id==obj2.ObjectId
比较。当内部过滤器上的正匹配计数大于零时,它返回 true。那么这就是外部过滤器的答案。
关于javascript - typescript:如何从 2 个不同的对象集中获取具有相同属性值但不同键的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60439450/