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

如何实现更简洁跨浏览器兼容的JSON值校验与判断逻辑

专业名称匹配逻辑优化方案

你把匹配项抽离为数组的思路完全可行,相比堆砌||和includes的写法,可维护性会高很多,以下是不同兼容场景的实现方式,逻辑和你原有代码完全等价,不会出现匹配偏差。

第一步:抽离匹配配置

首先把所有需要匹配的商学类专业关键词抽离为独立数组,后续增删匹配项只需要修改这个数组,不用动判断逻辑:

var BUSINESS_MAJOR_LIST = [
  'Accounting',
  'Business_Administration',
  'BA_and_Accounting',
  'BA_and_Chemistry',
  'BA_and_Communication',
  'BA_and_Computer_Info_Systems',
  'BA_and_Economics',
  'BA_and_Sport_Management',
  'BA_and_Theatre',
  'Business_and_Visual_Arts',
  'Computer_Information_Systems',
  'Data_Analytics',
  'Economics',
  'Marketing',
  'Sustainable_Business'
];

现代浏览器兼容写法

如果不需要兼容IE11及更早版本的浏览器,直接用数组的some()方法遍历判断即可——some()会在任意一个数组项满足匹配条件时返回true,和你原来一串||的判断逻辑完全一致:

if (BUSINESS_MAJOR_LIST.some(function(keyword) {
  return majorValue.includes(keyword);
})) {
  $('#internship').load('./snippets/internship/Business.html');
}

如果你的项目支持ES6语法,还可以简化成箭头函数写法,更简洁:

if (BUSINESS_MAJOR_LIST.some(keyword => majorValue.includes(keyword))) {
  $('#internship').load('./snippets/internship/Business.html');
}

全浏览器兼容写法

如果需要兼容IE等老旧浏览器,把字符串的includes()换成兼容性更好的indexOf()即可(indexOf在匹配到子串时会返回子串起始位置,没匹配到返回-1,所有浏览器都支持这个方法):

if (BUSINESS_MAJOR_LIST.some(function(keyword) {
  return majorValue.indexOf(keyword) !== -1;
})) {
  $('#internship').load('./snippets/internship/Business.html');
}

注:数组的some()方法从IE9开始支持,如果需要兼容IE8及更早版本,只需要加一个简单的polyfill,或者换成普通for循环遍历判断即可。

扩展:多分类场景优化

如果后续你需要对接更多专业分类、加载不同的HTML片段,可以直接把分类匹配规则和对应资源路径做成映射表,不用为每个分类写重复的if判断:

// 专业分类与对应片段的映射配置
const MAJOR_SNIPPET_CONFIG = {
  './snippets/internship/Business.html': BUSINESS_MAJOR_LIST,
  // 新增其他分类只需要在这里加配置,比如:
  // './snippets/internship/Engineering.html': ['Computer_Science', 'Software_Engineering']
};

// 统一遍历匹配
Object.keys(MAJOR_SNIPPET_CONFIG).forEach(function(path) {
  const matchList = MAJOR_SNIPPET_CONFIG[path];
  if (matchList.some(keyword => majorValue.includes(keyword))) {
    $('#internship').load(path);
  }
});

补充说明

你原有逻辑是子串模糊匹配,以上方案完全保留了这个规则,如果后续需要改成精确匹配专业名称,只需要把判断条件换成majorValue === keyword即可,修改成本极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:09:18