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

如何从JSON对象数组提取去重的Domain和Manager字段生成两个数组

单次遍历提取去重Domain、Manager数组的实现方案

你当前的写法存在两个问题,一是需要遍历两次原数组,二是没有做去重处理,最终得到的数组会存在重复值。你可以通过单次遍历配合Set自动去重的特性实现需求,代码如下:

const domainSet = new Set<string>();
const managerSet = new Set<string>();

// 单次遍历完成两个字段的收集和去重
res.forEach(item => {
  domainSet.add(item.Domain);
  managerSet.add(item.Manager);
});

// 转为数组格式
const Domains: string[] = Array.from(domainSet);
const Managers: string[] = Array.from(managerSet);

该实现的优势:

  • 仅对原数组做1次遍历,时间复杂度为O(n),数据量越大相比两次遍历的写法性能优势越明显
  • 依托Set的元素唯一性特性自动完成去重,无需手动写判断逻辑,代码简洁易维护

如果你的运行环境不支持ES6的Set,也可以用数组判断的原生写法实现:

const Domains: string[] = [];
const Managers: string[] = [];

res.forEach(item => {
  if (!Domains.includes(item.Domain)) {
    Domains.push(item.Domain);
  }
  if (!Managers.includes(item.Manager)) {
    Managers.push(item.Manager);
  }
});

该方案无需依赖ES6新特性,兼容性更强,适合需要兼容低版本运行环境的场景。小数据量下性能差异不大,数据量较大时性能会略低于Set方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:48:03