Switch Case多个条件写法与代码优化技巧
一、Switch Case基础语法回顾
switch case是编程中常用的多分支选择结构,基本语法如下:
“`javascript
switch(expression) {
case value1:
// 代码块1
break;
case value2:
// 代码块2
break;
default:
// 默认代码块
}
“`
二、多个条件的处理方式
1. 多个case共享同一代码块
这是处理多个条件的常见方式,通过省略break语句让多个case共享同一段执行逻辑:
“`javascript
let fruit = ‘apple’;
switch(fruit) {
case ‘apple’:
case ‘pear’:
case ‘peach’:
console.log(‘这是圆形水果‘);
break;
case ‘banana’:
console.log(‘这是长形水果’);
break;
default:
console.log(‘未知水果’);
}
“`
2. 使用逻辑或运算符
某些语言允许在case中使用表达式:
“`javascript
let score = 85;
switch(true) {
case (score >= 90):
console.log(‘A’);
break;
case (score >= 80 || score >= 85): // 注意:这样写有问题
console.log(‘B’);
break;
default:
console.log(‘C’);
}
“`
注意:这种方式在不同语言中支持程度不同,JavaScript支持但需要注意条件顺序。
三、代码优化技巧
1. 使用对象字面量替代复杂switch
当case数量较多时,对象映射通常更清晰:
“`javascript
const fruitActions = {
‘apple’: () => console.log(‘苹果’),
‘banana’: () => console.log(‘香蕉’),
‘orange’: () => console.log(‘橙子’),
‘default’: () => console.log(‘未知水果’)
};
function handleFruit(fruit) {
const action = fruitActions[fruit] || fruitActions[‘default’];
action();
}
“`
2. 策略模式优化
对于复杂的条件逻辑,考虑使用策略模式:
“`javascript
const strategies = {
‘admin’: () => console.log(‘显示管理员面板’),
‘user’: () => console.log(‘显示用户面板’),
‘guest’: () => console.log(‘显示访客面板’)
};
function showPanel(role) {
const strategy = strategies[role] || strategies[‘guest’];
strategy();
}
“`
3. 使用Map数据结构
ES6的Map提供了更灵活的键值对存储:
“`javascript
const colorMap = new Map([
[‘red’, ‘
FF0000′],
[‘green’, ‘
00FF00′],
[‘blue’, ‘
0000FF’]
]);
function getColorCode(color) {
return colorMap.get(color) || ‘
FFFFFF’;
}
“`
四、实际案例分析
案例1:状态机处理
“`javascript
// 订单状态处理
function handleOrderStatus(status) {
switch(status) {
case ‘pending’:
case ‘processing’:
sendNotification(‘您的订单正在处理中’);
break;
case ‘shipped’:
updateTracking();
sendNotification(‘您的订单已发货’);
break;
case ‘delivered’:
completeOrder();
requestReview();
break;
default:
logError(‘未知订单状态’);
}
}
“`
案例2:游戏角色动作控制
“`javascript
// 优化前的switch case
function handleInput(input) {
switch(input) {
case ‘ArrowUp’:
moveUp();
break;
case ‘ArrowDown’:
moveDown();
break;
// …其他方向
default:
idle();
}
}
// 优化后使用对象映射
const inputActions = {
‘ArrowUp’: moveUp,
‘ArrowDown’: moveDown,
‘ArrowLeft’: moveLeft,
‘ArrowRight’: moveRight
};
function handleInputOptimized(input) {
const action = inputActions[input] || idle;
action();
}
“`
五、最佳实践总结
1. 当处理少量离散值时,switch case是合适的选择
2. 多个case共享逻辑时,注意break语句的正确使用
3. 当条件超过5-7个时,考虑使用对象映射或策略模式
4. 优先考虑可读性和维护性,而不仅仅是代码行数
5. 在JavaScript中,对象字面量通常比switch case更灵活
通过合理选择条件处理方式,可以显著提高代码的可读性和可维护性,特别是在处理复杂业务逻辑时。
原文链接:https://www.g7games.com/50627.html 。如若转载,请注明出处:https://www.g7games.com/50627.html
