为了账号安全,请及时绑定邮箱和手机立即绑定

查找包含稍微不同的对象的2个数组的交集

查找包含稍微不同的对象的2个数组的交集

蝴蝶不菲 2021-05-18 17:19:55
我试图从包含稍微不同的对象的2个不同的数组中找到交集。例如:  const  arr1 = [         {            "number":"1234",          "id":"34782",          "firstName":"John",          "lastName":"Smith",          "email":"test1@test.com",       },       {            "number":"1232",          "id":"34783",          "firstName":"Chad",          "lastName":"Baker",          "email":"test2@test.com",       }    ];      const  arr2 = [         {            "uuid":"0123",          "firstName":"John",          "lastName":"Smith",          "title":"Director"       },       {            "uuid":"0125",          "firstName":"Sam",          "lastName":"Hurst",          "title":"Manager"       }    ]const arr3 = arr1.filter(object => arr2.includes(object));console.log(arr3);我试图创建一个只包含的对象一个新的数组arr1,其中firstName和lastName值在两个数组相同。上述数据的期望结果:    arr3 = [         {            "number":"1234",          "id":"34782",          "firstName":"John",          "lastName":"Smith",          "email":"test1@test.com",       },     ]因为此对象的firstName和lastName都匹配,arr1并且arr2现在我有 this.arr3 = this.arr1.filter(object => this.arr2.includes(object))但是由于专有名称导致arr1和arr2包含不同的对象,所以这是行不通的。
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

尝试这样的事情:


const arr1 = [{

    "number": "1234",

    "id": "34782",

    "firstName": "John",

    "lastName": "Smith",

    "email": "test1@test.com",

  },

  {

    "number": "1232",

    "id": "34783",

    "firstName": "Chad",

    "lastName": "Baker",

    "email": "test2@test.com",

  }

];


const arr2 = [{

    "uuid": "0123",

    "firstName": "John",

    "lastName": "Smith",

    "title": "Director"

  },

  {

    "uuid": "0125",

    "firstName": "Sam",

    "lastName": "Hurst",

    "title": "Manager"

  }

]

const arr3 = arr1.filter(value =>

  arr2.some(value2 =>

    value.firstName === value2.firstName && value.lastName === value2.lastName

  )

);


console.log(arr3);


查看完整回答
反对 回复 2021-05-27
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我认为您可以尝试以下方法:

arr1.filter(item1 => (arr2.find(item2 => (item2.firstName == item1.firstName && item2.lastName == item1.lastName)) != undefined));

它使用arr2.find函数检查它是否包含某些具有相同firstName和lastName属性的项目。


查看完整回答
反对 回复 2021-05-27
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信