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

如何通过子串分割筛选数组中后缀重复的元素

按分割后的子串筛选重复元素的解决方案

原代码逻辑是判断数组中完全重复的元素,但你的需求是找出按-分割后,后半段子串重复的所有元素,因此原逻辑无法实现目标。

解决思路

  • 先遍历数组,提取每个元素-之后的子串,统计每个子串的出现次数
  • 再次遍历数组,将子串出现次数大于1的元素收集到结果数组中

实现代码

var arr = ['abc-10.10.10.0/22','abc-10.01.21.0/22','abc-10.01.01.0/22','abcd-10.01.01.0/22'];
var duplicates = [];

// 统计每个后缀子串的出现次数
const suffixCount = {};
arr.forEach(item => {
  const suffix = item.split('-')[1];
  suffixCount[suffix] = (suffixCount[suffix] || 0) + 1;
});

// 收集所有后缀重复的元素
arr.forEach(item => {
  const suffix = item.split('-')[1];
  if (suffixCount[suffix] > 1) {
    duplicates.push(item);
  }
});

console.log("Duplicate values:", duplicates);
// 输出:["abc-10.01.01.0/22", "abcd-10.01.01.0/22"]

代码说明

  • suffixCount对象用于记录每个后缀子串的出现次数,比如示例中10.01.01.0/22会被统计为2次
  • 第二次遍历数组时,只要元素对应的后缀子串计数大于1,就说明存在其他元素和它的后缀重复,将其加入duplicates数组即可得到目标结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:25:25