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

Angular中如何从含重复项的数组里取出每个name对应的唯一对象?

数组按name去重实现方案

参考的源数组数据示例:
数据库获取的数据

核心逻辑

通过哈希集合(Set)记录已经保存过的name值,遍历原数组时仅保留同时满足以下两个条件的元素:

  • 元素的customer_id等于1
  • 元素的name值未在哈希集合中出现过
    每保留一个元素就把对应的name加入哈希集合,避免后续同name元素被重复收录。该方案不受原数组排序影响,也可以自动适配后续新增的name类型,不需要修改静态配置。

代码示例

JavaScript 实现

// originalArr 替换为你实际获取的源数组
const originalArr = [/* 你的源数组数据 */];

const existedNames = new Set();
const filteredResult = [];

for (const item of originalArr) {
    // 跳过customer_id不符合要求的元素
    if (item.customer_id !== 1) continue;
    // 仅保留首次出现的name对应的元素
    if (!existedNames.has(item.name)) {
        filteredResult.push(item);
        existedNames.add(item.name);
    }
}

// filteredResult 就是最终需要的数组

如果你偏好链式调用的写法,也可以用以下方式实现:

const existedNames = new Set();
const filteredResult = originalArr
  .filter(item => item.customer_id === 1)
  .filter(item => !existedNames.has(item.name) && existedNames.add(item.name));

Python 实现

# original_arr 替换为你实际获取的源数组
original_arr = [] # 你的源数组数据

existed_names = set()
filtered_result = []

for item in original_arr:
    if item["customer_id"] != 1:
        continue
    if item["name"] not in existed_names:
        filtered_result.append(item)
        existed_names.add(item["name"])

方案优势

  • 时间复杂度为O(n),仅需遍历一次源数组,性能优异
  • 完全不受源数组元素排序的影响,同name元素无论在什么位置都能正确去重
  • 自动适配name数量变化,后续新增任何name类型都不需要修改代码逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:45:00