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

Angular中过滤响应数据重复名称(保留首次出现记录)

按名称去重JSON数据,保留首次出现的记录

要实现只保留每个Name字段首次出现的记录,核心逻辑是遍历数组时记录已出现过的名称,遇到未记录的名称就保留该条目。以下是具体实现方案:

实现代码(JavaScript)

const originalData = [
    { "Id": 51, "RandomId": "4545443434-aa", "Name": "James Smith" },
    { "Id": 21, "RandomId": "4545456666-aa", "Name": "James Smith" },
    { "Id": 31, "RandomId": "4543443434-aa", "Name": "Robert" },
    { "Id": 41, "RandomId": "2535443434-aa", "Name": "Lawrence" },
    { "Id": 71, "RandomId": "4534443434-aa", "Name": "Mathew" },
    { "Id": 21, "RandomId": "4543453434-aa", "Name": "Robert,Lawrence,Mathew" },
    { "Id": 78, "RandomId": "4545343434-aa", "Name": "Robert,Lawrence,Mathew" },
    { "Id": 34, "RandomId": "1545443434-aa", "Name": "Mathew" },
    { "Id": 12, "RandomId": "4545443437-aa", "Name": "Lawrence" },
    { "Id": 11, "RandomId": "4535443434-aa", "Name": "Robert" }
];

const seenNames = new Set();
const filteredData = originalData.filter(item => {
    if (!seenNames.has(item.Name)) {
        seenNames.add(item.Name);
        return true;
    }
    return false;
});

console.log(filteredData);

去重后的结果

[
    {
        "Id": 51,
        "RandomId": "4545443434-aa",
        "Name": "James Smith"
    },
    {
        "Id": 31,
        "RandomId": "4543443434-aa",
        "Name": "Robert"
    },
    {
        "Id": 41,
        "RandomId": "2535443434-aa",
        "Name": "Lawrence"
    },
    {
        "Id": 71,
        "RandomId": "4534443434-aa",
        "Name": "Mathew"
    },
    {
        "Id": 21,
        "RandomId": "4543453434-aa",
        "Name": "Robert,Lawrence,Mathew"
    }
]

这个方案会严格保留每个名称第一次出现的记录,后续同名条目都会被过滤掉,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:15:42