Javascript typescript:如何从两组不同的对象中获取属性值相同但键不同的对象

Javascript typescript:如何从两组不同的对象中获取属性值相同但键不同的对象,javascript,typescript,javascript-objects,ngrx,keyvaluepair,Javascript,Typescript,Javascript Objects,Ngrx,Keyvaluepair,我必须从状态数据的表单中获取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'} object

我必须从状态数据的表单中获取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')
objectSet1对应的值不是23个静态值

结果应包含第一个对象集上存在ID的项

预期产出:

objectSet2:
      {ObjectId: 23, name: 'sometwo', email: 'sometwo@mail.com'},
      {ObjectId: 23, name: 'five ', email: 'five@mail.com'}

Yoy很接近,只需要添加一个新的过滤器,如下所示:

objetSet1=[{id:12,名称:'foobar',电子邮件:'foo@bar.com'},
{id:23,姓名:'Bar Foo',电子邮件:'bar@foo.com'},
{id:61,姓名:'Barbell',电子邮件:'barbell@mail.com'},
{id:45,姓名:'Joe Ocean',电子邮件:'joe@ocean.com'}];
objectSet2=[{ObjectId:15,姓名:'someone',电子邮件:'someone@mail.com'},
{ObjectId:23,姓名:'sometwo',电子邮件:'sometwo@mail.com'},
{ObjectId:72,姓名:'seven',电子邮件:'seven@mail.com'},
{ObjectId:23,姓名:'5',电子邮件:'five@mail.com'}];
var result=objectSet2.filter((obj2)=>objetSet1.filter((obj1)=>obj1.id==obj2.ObjectId).length>0)

控制台日志(结果)Yoy很接近,只需要添加一个新的过滤器,如下所示:

objetSet1=[{id:12,名称:'foobar',电子邮件:'foo@bar.com'},
{id:23,姓名:'Bar Foo',电子邮件:'bar@foo.com'},
{id:61,姓名:'Barbell',电子邮件:'barbell@mail.com'},
{id:45,姓名:'Joe Ocean',电子邮件:'joe@ocean.com'}];
objectSet2=[{ObjectId:15,姓名:'someone',电子邮件:'someone@mail.com'},
{ObjectId:23,姓名:'sometwo',电子邮件:'sometwo@mail.com'},
{ObjectId:72,姓名:'seven',电子邮件:'seven@mail.com'},
{ObjectId:23,姓名:'5',电子邮件:'five@mail.com'}];
var result=objectSet2.filter((obj2)=>objetSet1.filter((obj1)=>obj1.id==obj2.ObjectId).length>0)

控制台日志(结果)您可以从第一个数组创建一组ID:

  const ids = new Set(objectSet1.map(object => object.id));
然后可以检查第二个阵列中的对象是否在该集中

  ids.has(object.ObjectId)

您可以从第一个数组创建一组ID:

  const ids = new Set(objectSet1.map(object => object.id));
然后可以检查第二个阵列中的对象是否在该集中

  ids.has(object.ObjectId)

这将Jonas Wilms和Ictus的答案结合在一起,我认为这稍微清晰一些,我已经对代码进行了注释,以便将来的读者了解正在做什么

//定义Yoann Eddy最初的两组对象,但作为数组
让objectSet1=[
{id:12,姓名:'foobar',电子邮件:'foo@bar.com'},
{id:23,姓名:'Bar Foo',电子邮件:'bar@foo.com'},
{id:61,姓名:'Barbell',电子邮件:'barbell@mail.com'},
{id:45,姓名:'Joe Ocean',电子邮件:'joe@ocean.com'}
];
让objectSet2=[
{ObjectId:15,姓名:'someone',电子邮件:'someone@mail.com'},
{ObjectId:23,姓名:'sometwo',电子邮件:'sometwo@mail.com'},
{ObjectId:72,姓名:'seven',电子邮件:'seven@mail.com'},
{ObjectId:23,姓名:'5',电子邮件:'five@mail.com'}
];
//仅获取第一组的ID号
让ids=newset(objectSet1.map(o=>o.id));
//过滤第二个集合,仅保留具有
//第一组ID中的object.ObjectId
让result=objectSet2.filter(o=>ids.has(o.ObjectId));

控制台日志(结果)这结合了Jonas Wilms和Ictus的答案,我认为这稍微清晰一些,我已经对代码进行了注释,以便未来的读者了解正在做什么

//定义Yoann Eddy最初的两组对象,但作为数组
让objectSet1=[
{id:12,姓名:'foobar',电子邮件:'foo@bar.com'},
{id:23,姓名:'Bar Foo',电子邮件:'bar@foo.com'},
{id:61,姓名:'Barbell',电子邮件:'barbell@mail.com'},
{id:45,姓名:'Joe Ocean',电子邮件:'joe@ocean.com'}
];
让objectSet2=[
{ObjectId:15,姓名:'someone',电子邮件:'someone@mail.com'},
{ObjectId:23,姓名:'sometwo',电子邮件:'sometwo@mail.com'},
{ObjectId:72,姓名:'seven',电子邮件:'seven@mail.com'},
{ObjectId:23,姓名:'5',电子邮件:'five@mail.com'}
];
//仅获取第一组的ID号
让ids=newset(objectSet1.map(o=>o.id));
//过滤第二个集合,仅保留具有
//第一组ID中的object.ObjectId
让result=objectSet2.filter(o=>ids.has(o.ObjectId));

控制台日志(结果)我不确定我是否理解这个问题。“objectSet1对应的值”是什么意思是?理想情况下,您应该提供一个如中所述的,有人可以进入一个独立的IDE,如有足够的用例,以便希望帮助您的人有很好的机会给您一个相关的答案。您的意思是结果应该包含第一个对象集上具有ID的项吗?对,我真的很抱歉没有我的问题的精确性和表达方式。。。是的,我的意思是,结果应该包含在第一个对象上有ID的项set@StephenP谢谢你的反馈。我对这里的问题一无所知。。。我编辑过,希望它看起来更清晰。。如果需要更多的细节,请告诉我。我不确定我是否理解这个问题。“objectSet1对应的值”是什么意思是?理想情况下,您应该提供一个如中所述的,有人可以进入一个独立的IDE,如有足够的用例,以便希望帮助您的人有很好的机会给您一个相关的答案。您的意思是结果应该包含第一个对象集上具有ID的项吗?对,我真的很抱歉没有我的问题的精确性和表达方式。。。是的,我的意思是,结果应该包含在第一个对象上有ID的项set@StephenP谢谢你的反馈。我对这里的问题一无所知。。。我编辑过,希望它看起来更清晰。。请让我知道,如果更多的细节是需要不幸的是,这没有工作。但是谢谢你的时间和考虑不幸的是这没有成功。但是谢谢你的时间和考虑