JavaScript多条件判断函数的最优重构方案咨询
最优重构方案:使用对象键值映射
你当前的多if写法冗余繁琐,switch/case虽比if略优,但条目增多后仍不够高效;双数组方案确实存在致命的维护风险——新增或修改条目时极容易出现键值位置错位的问题。
最推荐的方案是用对象作为键值映射表,直接将pageName作为键,对应的urlPart作为值,这种方式直观易维护,且查找效率为O(1),远优于数组indexOf的O(n)。
基础实现
function checkURL(pageName) { const pageToUrlMap = { 'something': 'main/contact', 'anythingelse': 'administration/user', 'another page': 'administration/country' }; // 找不到对应值时返回空字符串,与原函数逻辑保持一致 return pageToUrlMap[pageName] || ''; }
进阶优化(适合大量条目场景)
如果条目达到50条左右,建议把映射表抽离到函数外部,避免每次调用函数都重复创建对象:
// 抽离为模块级/全局常量,仅初始化一次 const PAGE_TO_URL_MAP = { 'something': 'main/contact', 'anythingelse': 'administration/user', 'another page': 'administration/country', // 新增条目直接添加键值对即可,完全不用担心错位问题 'dashboard': 'admin/dashboard', 'settings': 'user/settings' }; function checkURL(pageName) { return PAGE_TO_URL_MAP[pageName] || ''; }
特殊场景处理
如果需要支持大小写不敏感或字符串预处理,可在函数内先对输入做标准化:
function checkURL(pageName) { // 统一转为小写并去除首尾空格,兼容不同输入格式 const normalizedPage = pageName.toLowerCase().trim(); return PAGE_TO_URL_MAP[normalizedPage] || ''; }
内容的提问来源于stack exchange,提问作者Darksymphony
相关产品推荐
相关产品推荐

