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

如何在JavaScript的map函数中去除重复值?尝试方案未生效

如何在JavaScript遍历数组时去除重复的name值?

需要遍历给定的JSON数据,输出不重复的name字段值,当前代码会输出重复内容,尝试过用Set但方法错误,求可行解决方案。

给定JSON数据

"results": [
    {
        "data": {
            "labels": {
                "results": [
                    {
                        "name": "tom"
                    }
                ]
            }
        }
    },
    {
        "data": {
            "labels": {
                "results": [
                    {
                        "name": "jerry"
                    }
                ]
            }
        }
    },
    {
        "data": {
            "labels": {
                "results": [
                    {
                        "name": "tom"
                    }
                ]
            }
        }
    }
]

当前代码

obj.results.map((items) => {
    if (items.data.labels.results.length) {
        items.data.labels.results.map((result) => {
            console.log(result.name);
        });
    }
});

当前输出

tom
jerry
tom

期望输出

tom
jerry

已尝试但无效的方案

obj.results.map((items) => {
    if (items.data.label.results.length) {
        items.data.label.results.map((result) => {
            console.log(Array.from(new Set(result.name)));
        });
    }
});

该方案输出

[ 't', 'o', 'm' ]
[ 'j', 'e', 'r', 'r', 'y' ]
[ 't', 'o', 'm' ]

解决方案

你之前的错误在于把单个name字符串传入Set,导致它会把字符串拆成单个字符去重,完全偏离需求。下面提供两种可行方案:

方案1:先收集所有name再去重输出

先把所有name提取到一个数组,再用Set去重后遍历打印:

// 提取所有name到数组
const allNames = obj.results.flatMap(item => 
  item.data.labels.results.map(res => res.name)
);
// 去重后输出
[...new Set(allNames)].forEach(name => console.log(name));

方案2:遍历过程中实时去重

用Set记录已经打印过的name,遇到未记录的才打印:

const printedNames = new Set();

obj.results.forEach(item => {
  if (item.data.labels.results.length) {
    item.data.labels.results.forEach(res => {
      if (!printedNames.has(res.name)) {
        printedNames.add(res.name);
        console.log(res.name);
      }
    });
  }
});

注意:这里用forEach代替map更合理,因为你只是执行打印操作,不需要生成新数组,map的核心用途是转换数组元素并返回新数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:19:47