如何根据重复名称从对象数组中获取对应完整数据?
解决方法:获取重复名称对应的完整对象
你已经搞定了最核心的重复名称检测和交集匹配环节,现在只需要把这些名称和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
相关产品推荐
相关产品推荐

