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

如何实现JSON值与数组值近似匹配替换及让includes()返回匹配值

解决批发商名称匹配与替换问题

看起来你已经有了基础的匹配思路,但要实现返回对应批发商全称和近似匹配这两个需求,我们可以通过构建标准化映射表的方式来解决,下面是具体的方案:


核心思路

  1. 构建映射表:把批发商数组中的每个条目处理成「标准化名称 → 原全称」的键值对,这样匹配到后就能直接拿到原名称,而不是布尔值。
  2. 统一标准化规则:对批发商名称和JSON中的值都应用相同的标准化处理,消除大小写、空格、特殊符号(比如横杠)的差异,实现近似匹配。

具体代码实现

第一步:编写标准化函数

首先定义一个函数,把字符串转换成统一的格式,忽略大小写、空格和特殊符号:

function normalizeWholesalerName(name) {
  // 转大写 + 移除所有非字母数字的字符
  return name.toUpperCase().replace(/[^A-Z0-9]/g, '');
}

第二步:构建批发商映射表

用reduce把原批发商数组转换成映射表,键是标准化后的名称,值是原全称:

const wholesalers = [ "B536 - T QUALITY LTD", ];

const wholesalerMap = wholesalers.reduce((map, wholesaler) => {
  // 处理原批发商名称:去掉前7位 + 移除末尾的"LTD"
  const processedWholesaler = wholesaler.substring(7).replace(" LTD", "");
  // 生成标准化的键
  const normalizedKey = normalizeWholesalerName(processedWholesaler);
  // 存入映射表
  map[normalizedKey] = wholesaler;
  return map;
}, {});

执行后,wholesalerMap会是:{ "TQUALITY": "B536 - T QUALITY LTD" }

第三步:处理JSON数据

遍历JSON数组,对每个条目进行标准化匹配,替换为对应的批发商全称:

const data = [
  { 'Preferred Wholesaler': 'T-Quality' },
  { 'Preferred Wholesaler': 'T Quality' }
];

const newRecords = data.map(record => {
  const originalName = record["Preferred Wholesaler"];
  // 标准化JSON中的名称
  const normalizedRecordName = normalizeWholesalerName(originalName);
  // 从映射表中查找匹配的全称
  const matchedFullName = wholesalerMap[normalizedRecordName];
  
  // 如果匹配到就替换,没匹配到可以保留原名称(或者换成你需要的默认值)
  return {
    ...record,
    ["Preferred Wholesaler"]: matchedFullName || originalName
  };
});

效果验证

执行上面的代码后,newRecords的结果会是:

[
  { 'Preferred Wholesaler': 'B536 - T QUALITY LTD' },
  { 'Preferred Wholesaler': 'B536 - T QUALITY LTD' }
]

不管JSON里的名称是T-Quality还是T Quality,都能正确匹配到对应的批发商全称。


扩展说明

如果需要更宽松的匹配(比如包含关系,比如JSON里的T QUAL也能匹配到T QUALITY),可以修改匹配逻辑,比如用Object.keys(wholesalerMap).find(key => key.includes(normalizedRecordName))来查找键,但这种方式可能会有多个匹配的情况,需要额外处理优先级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:47:37