在日常开发中,经常遇到需要根据不同的条件返回不同值的场景。今天分享一个让我效率提升300%的代码优化技巧!
在日常开发中,经常遇到需要根据不同的条件返回不同值的场景。今天分享一个让我效率提升300%的代码优化技巧!

假设我们正在开发一个审批流程系统,需要根据节点编号返回对应的节点处理角色:
一、传统if else写法
function getCurrentNodeNo(nodeCode) { if (nodeCode == 1) { return "经办人确认"; } else if (nodeCode == 2) { return "复核人审批"; } else if (nodeCode == 3) { return "签发人审批"; } else if (nodeCode == 4) { return "用印人审批"; } else { return -1; } }
是最常见的“硬编码”写法,逻辑直白,易于理解,但代码冗长,维护性差、扩展麻烦。
二、进阶,三元运算符
function getCurrentNodeNo(nodeCode) { return nodeCode == 1 ? '经办人确认' : nodeCode == 2 ? '复核人审批' : nodeCode == 3 ? '签发人审批' : nodeCode == 4 ? '用印人审批' : -1 }
代码相对简洁,但嵌套层次深,可读性差。
三、对象映射(最常用,清晰高效)
const nodeNoMap = { 1: '经办人确认', 2: '复核人审批', 3: '签发人审批', 4: '用印人审批', }; function getCurrentNodeNo(nodeCode) { return nodeNoMap[nodeCode] ?? -1 ; // 使用空值合并运算符 }
配置与逻辑分离,新增节点只需加一行,性能优于 if-else 和 switch(属性查找),易于扩展
四、Map 结构(更灵活,支持非字符串键)
const nodeMap = new Map([ [1, "经办人确认"], [2, "复核人审批"], [3, "签发人审批"], [4, "用印人审批"]]);function getCurrentNodeNo(nodeCode) { return nodeMap.get(nodeCode) ?? -1;}键类型不限于字符串(如对象、Symbol)需要额外存储元数据或方法时
五、为什么选择对象映射是最佳选择?
1. 性能提升 300%
if-else:时间复杂度 O(n),需要依次判断对象映射:时间复杂度 O(1),直接哈希查找当条件数量增多时,性能差异会更加明显!
2. 代码可维护性大幅提升
新增节点时,只需要在对象中添加一行:
const nodeNoMap = { 1: "经办人确认", 2: "复核人审批", 3: "签发人审批", 4: "用印人审批", 5: "归档人处理", // 新增节点 6: "管理员审核", // 新增节点 };
下次写条件判断时,不妨思考一下:能否用对象映射来替代?
这个简单的改变,让我的代码质量提升了一个档次。
希望这个技巧也能帮助你写出更优雅、更高效的代码!
