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

JavaScript如何根据数组元素的字符串前缀提取每组首个唯一值

JavaScript 提取每个前缀首个匹配元素的实现方案

核心逻辑是遍历数组时记录已出现过的前缀,每个前缀仅保留第一次出现的对应元素,仅需一次遍历即可完成,时间复杂度为O(n)。

基础实现(可读性最高)

const mainArr = ['shape-10983', 'size-2364', 'size-7800', 'size-4602', 'shape-11073', 'size-15027', 'size-15030', 'size-15033', 'height-3399', 'height-5884'];

// 存储已出现过的前缀
const existedPrefix = new Set();
const requiredVal = [];

for (const item of mainArr) {
  // 提取元素前缀(截取第一个横杠前的内容,兼容元素内存在多个横杠的场景)
  const prefix = item.slice(0, item.indexOf('-'));
  // 仅当该前缀未出现过时存入结果
  if (!existedPrefix.has(prefix)) {
    requiredVal.push(item);
    existedPrefix.add(prefix);
  }
}

console.log(requiredVal); // 输出 ["shape-10983", "size-2364", "height-3399"]

简洁版reduce实现

const requiredVal = mainArr.reduce((accumulator, current) => {
  const prefix = current.slice(0, current.indexOf('-'));
  if (!accumulator.record.has(prefix)) {
    accumulator.result.push(current);
    accumulator.record.add(prefix);
  }
  return accumulator;
}, { record: new Set(), result: [] }).result;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:15:03