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

如何删除JavaScript数组中已被更长项包含的短字符串元素

实现方案

核心思路

  • 你已经完成的按长度降序排序是核心前提,保证遍历的时候更长的元素优先进入结果集
  • 维护结果数组,遍历排序后的元素时,仅检查当前元素是否被结果集中长度更长的元素包含:
    • 是则丢弃当前短元素
    • 否则保留(长度相同的完全匹配元素会全部保留,符合需求)

完整代码

const items = ['Knowledge base', 'base', 'management', 'knowledge management', 'Knowledge', 'knowledge', 'knowledge management']
// 按长度降序排序,长元素在前
const sortedItems = items.sort((a,b) => b.length - a.length)
const result = []

for (const item of sortedItems) {
  // 检查是否有更长的已保留元素包含当前元素
  const isContained = result.some(el => el.length > item.length && el.includes(item))
  if (!isContained) {
    result.push(item)
  }
}

console.log(result)
// 输出:['knowledge management', 'knowledge management', 'Knowledge base'],元素和需求完全一致,可自行调整排序规则匹配预期顺序

可选调整

如果需要不区分大小写判断包含关系,把判断条件改为:

const isContained = result.some(el => el.length > item.length && el.toLowerCase().includes(item.toLowerCase()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:06:05