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

如何基于另一数组匹配模式对对象数组进行分组替换与去重

实现方案:匹配应用名称并去重替换

需求说明

给定两个数组:

  • data:存储带后缀的应用名称对象数组
  • Appdata:存储标准应用名称的数组

需要完成:

  • 遍历data,将所有包含Appdata中名称的项替换为对应标准名称
  • 保留不匹配的原始项
  • 最终结果去重,每个标准名称仅保留一个,不匹配项也保留唯一实例

示例数据

const data = [
    { "Application": "Chrome - 567" },
    { "Application": "File Transfer Protocol - 45" },
    { "Application": "Google APIs - 3618" },
    { "Application": "Google Generic - 943" },
    { "Application": "Google Search - 54" },
    { "Application": "Microsoft - 2821" },
    { "Application": "Microsoft DFSR (Distributed File System Replication) - 3722" },
    { "Application": "Microsoft Remote Procedure Call - 742" },
    { "Application": "Telegram- 2235" },
    { "Application": "Facebook Videos - 2250" },
    { "Application": "Facebook - 690" }
];

const Appdata = ["Google", "Facebook", "Instagram", "Microsoft", "Telegram"];

实现代码

// 用Set记录已处理的标准名称,避免重复
const processedApps = new Set();
const result = [];

// 先处理需要替换的标准应用名称
Appdata.forEach(appName => {
    const hasMatch = data.some(item => item.Application.includes(appName));
    if (hasMatch && !processedApps.has(appName)) {
        result.push({ Application: appName });
        processedApps.add(appName);
    }
});

// 处理不匹配的项,同时去重
const unprocessedItems = new Set();
data.forEach(item => {
    const appValue = item.Application;
    const isMatched = Appdata.some(name => appValue.includes(name));
    if (!isMatched && !unprocessedItems.has(appValue)) {
        result.push(item);
        unprocessedItems.add(appValue);
    }
});

console.log(result);

代码逻辑解释

  1. 处理标准名称项:遍历Appdata,检查data中是否存在包含该名称的项,若存在且未添加过,则将标准名称对象加入结果数组,并标记为已处理。
  2. 处理不匹配项:遍历data,判断当前项是否不匹配任何Appdata中的名称,若未添加过则加入结果数组,用Set确保去重。
  3. 去重机制:使用Set分别记录已添加的标准名称和未匹配项,避免重复出现。

预期输出

[
    { "Application": "Google" },
    { "Application": "Facebook" },
    { "Application": "Microsoft" },
    { "Application": "Telegram" },
    { "Application": "Chrome - 567" },
    { "Application": "File Transfer Protocol - 45" }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:45:32