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
相关产品推荐
相关产品推荐

