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

JavaScript数组按规则归约:匹配前缀去重并添加星号标记

数组归约实现方案

核心逻辑

  • 用集合记录已添加的带星号前缀,避免重复插入
  • 遍历原数组时,对每个元素做两种判断:
    1. 提取元素前两个字符,若该前缀在generalCase数组中:仅当该前缀未被记录过,才将前缀*加入结果数组,同时标记该前缀已处理
    2. 若前缀不在generalCase数组中:直接保留原元素到结果数组

代码示例

假设输入数组为:

const arr = ["ADB", "AB123", "AB456", "BD789", "BP012", "STR"];
const generalCase = ["AB", "BD", "BP"];

实现代码:

const reducedArray = [];
const processedPrefixes = new Set();

arr.forEach(item => {
  const prefix = item.slice(0, 2);
  if (generalCase.includes(prefix)) {
    if (!processedPrefixes.has(prefix)) {
      reducedArray.push(`${prefix}*`);
      processedPrefixes.add(prefix);
    }
  } else {
    reducedArray.push(item);
  }
});

console.log(reducedArray); // 输出:["ADB", "AB*", "BD*", "BP*", "STR"]

问题排查

之前的代码出现多余项,通常是因为没有做前缀去重——每次遇到匹配前缀的元素就插入一次前缀*,导致结果里出现重复的带星号前缀。用集合记录已处理的前缀,就能保证每个符合条件的前缀只被添加一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:25:20