You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据重复名称从对象数组中获取对应完整数据?

解决方法:获取重复名称对应的完整对象

你已经搞定了最核心的重复名称检测和交集匹配环节,现在只需要把这些名称和part1、part2里的完整对象关联起来就行。这里给你两种贴合你现有代码风格的实现方式:

方案1:用原生JavaScript实现(无需额外工具)

直接修改你的checkInArr函数,利用数组的filter方法筛选出对应名称的完整对象:

function checkInArr(duplicates) {
  // 从part1中筛选名字在重复列表里的完整对象
  const part1Matches = part1.filter(item => duplicates.includes(item.name));
  console.log('Part1中的重复名称对应对象:', part1Matches);

  // 从part2中筛选名字在重复列表里的完整对象
  const part2Matches = part2.filter(item => duplicates.includes(item.name));
  console.log('Part2中的重复名称对应对象:', part2Matches);
}

方案2:用Lodash工具实现(贴合你现有代码习惯)

如果你想继续用Lodash的方法,可以用_.filter搭配_.includes,代码更简洁:

function checkInArr(duplicates) {
  const part1Matches = _.filter(part1, item => _.includes(duplicates, item.name));
  console.log('Part1中的重复名称对应对象:', part1Matches);

  const part2Matches = _.filter(part2, item => _.includes(duplicates, item.name));
  console.log('Part2中的重复名称对应对象:', part2Matches);
}

实际运行效果

修改后运行代码,你会得到:

  • part1Matches包含Nancy和George的完整对象:
    [
      {height: 1.2, weight: 50, age: 55, name: "Nancy"},
      {height: 2, weight: 42, age: 24, name: "George"}
    ]
    
  • part2Matches只包含George的完整对象:
    [
      {height: 0.2, weight: 23, age: 45, name: "George"}
    ]
    

优化思路说明

原来的代码先通过_.pluck提取名称数组再做交集,其实可以跳过这一步——直接检查每个对象的name是否在重复列表里,一步到位拿到完整对象,既减少了中间变量,逻辑也更直观。

内容的提问来源于stack exchange,提问作者Angel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:42:19