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

JavaScript代码优化需求:基于产品编码前缀返回对应品牌

优化产品编码匹配逻辑的简洁方案

嘿,这种堆一堆if-else的写法确实越维护越头疼!咱们可以用映射表+前缀提取的方式彻底简化代码,既清晰又好扩展,以后加新品牌也不用写一堆判断语句。

具体实现步骤

  1. 创建品牌前缀映射表
    先把所有前缀和对应的品牌整理成一个对象,一目了然:

    // 前缀到品牌的映射,新增/修改品牌直接在这里操作就行
    const brandPrefixMap = {
      'ABC': 'Heinisch',
      'TRM': '你对应的TRM品牌名', // 替换成实际品牌名称
      'ERW': '你对应的ERW品牌名', // 替换成实际品牌名称
      'RRR': 'Reinhart'
    };
    
  2. 编写核心匹配函数
    提取产品编码的前3个字符,去映射表里找对应的品牌,找不到就返回默认值:

    function getBrand(PO) {
      // 提取前3个字符,统一转大写(兼容可能的小写输入)
      const prefix = PO.slice(0, 3).toUpperCase();
      // 从映射表取品牌,无匹配则返回"not known"
      return brandPrefixMap[prefix] || 'not known';
    }
    

为什么这比原来的写法好?

  • 简洁性:原来十几行的if-else现在几行搞定,逻辑一眼就能看明白
  • 可维护性:新增品牌只需要在brandPrefixMap里加一行键值对,不用修改判断逻辑
  • 鲁棒性:自动兼容前缀后带空格、符号(比如ABC-238、TRM IKQ)的情况,只要前3个字符是目标前缀就会匹配
  • 扩展性:如果以后需要支持不固定长度的前缀(比如某些品牌是2个字符),也可以轻松调整提取逻辑或者改用正则匹配模式

测试示例

console.log(getBrand("ABC 8765")); // 输出 "Heinisch"
console.log(getBrand("TRM-238")); // 输出你设置的TRM对应品牌
console.log(getBrand("ERW 877a")); // 输出你设置的ERW对应品牌
console.log(getBrand("XYZ 123")); // 输出 "not known"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:27:33