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

JavaScript如何获取唯一对象?无需额外数组返回双属性

解决方案:直接生成包含唯一Group-Name组合的对象数组

当然可行!既然你已经明确同一Group对应的Name始终相同,我们可以用几种简洁的方式实现需求,无需创建额外的中间数组,直接得到目标结果:

方法1:使用reduce + Map

这种方式通过reduce遍历原数组,用Map暂存唯一的Group对象,最后直接转换为目标数组:

const data = [{ Group: 'A', Name: 'SEAN' }, { Group: 'B', Name: 'PAUL' }, { Group: 'A', Name: 'SEAN' }, { Group: 'B', Name: 'PAUL' }];

const uniqueGroups = Array.from(
  data.reduce((map, item) => {
    // 仅当Map中不存在当前Group时,才添加对应的对象
    if (!map.has(item.Group)) {
      map.set(item.Group, item);
    }
    return map;
  }, new Map()).values()
);

console.log(uniqueGroups);
// 输出: [{ Group: 'A', Name: 'SEAN' }, { Group: 'B', Name: 'PAUL' }]

这里的Map只是临时存储结构,并非额外的数组,完全符合你“无需创建第二个数组”的要求。

方法2:使用filter + Set

这种方式更直观,直接在原数组上筛选出首次出现的Group对象,用Set跟踪已处理的Group:

const data = [{ Group: 'A', Name: 'SEAN' }, { Group: 'B', Name: 'PAUL' }, { Group: 'A', Name: 'SEAN' }, { Group: 'B', Name: 'PAUL' }];

const seenGroups = new Set();
const uniqueGroups = data.filter(item => {
  if (!seenGroups.has(item.Group)) {
    seenGroups.add(item.Group);
    return true; // 保留首次出现的对象
  }
  return false; // 过滤重复的Group对象
});

console.log(uniqueGroups);
// 输出: [{ Group: 'A', Name: 'SEAN' }, { Group: 'B', Name: 'PAUL' }]

这个方法没有创建额外的中间数组,直接通过filter生成最终结果,代码可读性也很高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:49:43