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

如何基于指定标准名称列表清理JS数组中汽车Model属性的冗余内容?

实现思路

  • 统一转换为小写匹配,规避大小写差异导致的匹配失败问题
  • 采用最长匹配优先规则:标准名称包含的单词数越多、匹配优先级越高,避免短名称命中所有长名称的问题
  • 逐个校验标准名称的所有单词是否都存在于原始Model字符串的单词集合中,全命中则视为匹配候选

实现代码

function cleanCarModel(rawModel, cleanNames) {
  // 原始模型转小写拆为单词集合,提升校验效率
  const rawWordSet = new Set(rawModel.toLowerCase().split(/\s+/));
  // 标准名按单词数降序排序,优先匹配更长的标准名
  const sortedCleanNames = [...cleanNames].sort((a, b) => {
    return b.split(/\s+/).length - a.split(/\s+/).length;
  });
  // 遍历找到第一个全匹配的标准名
  for (const cleanName of sortedCleanNames) {
    const cleanWords = cleanName.toLowerCase().split(/\s+/);
    const isAllMatch = cleanWords.every(word => rawWordSet.has(word));
    if (isAllMatch) return cleanName;
  }
  // 无匹配时返回原始值,可根据需求自行调整
  return rawModel;
}

// 测试调用
const cars = [{
  Id: 1,
  Model: 'Transit 350 L3 Van'
},
{
  Id: 2,
  Model: 'Transit Custom 300 L2'
},
{
  Id: 3,
  Model: 'Transit Connect'
}];
const cleanNames = ['Transit Van', 'Transit Custom', 'Transit Connect'];

const processedCars = cars.map(item => ({
  ...item,
  CleanModel: cleanCarModel(item.Model, cleanNames)
}));
console.log(processedCars);

输出结果

处理后每条数据会新增CleanModel字段,对应值如下:

  • Id 1:Transit Van
  • Id 2:Transit Custom
  • Id 3:Transit Connect

该方案兼容动态生成的冗余词汇,后续新增标准名称也会自动按最长优先规则匹配,无需调整核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

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