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

TypeScript如何筛选对象数组中appname首次出现的对应完整对象

问题原因

你当前的写法会拿到最后一次出现的对象,是因为Map构造函数接收键值对数组时,遇到重复的键会用后面的键值对覆盖前面的,遍历完整个数组后,Map里存的自然就是每个appname最后一次出现的对应对象。

解决方案

你可以改用reduce方法遍历数组,仅当指定appname未在Map中存在时才存入,就能保留首次出现的对象:

this.getAppClient.getFullList()
    .subscribe((apps) => {
      const appMap = apps.myArray.reduce((map, current) => {
        const appName = current.myApp.appname;
        // 仅当Map中不存在该appname时才存入,保证存的是第一次出现的对象
        if (!map.has(appName)) {
          map.set(appName, current);
        }
        return map;
      }, new Map());
      this.applicationList = [...appMap.values()];
    })

该方案时间复杂度为O(n),仅需遍历一次数组即可完成筛选,和原写法性能相当,可读性也更高。

内容的提问来源于stack exchange,提问作者S-R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:00:00