有没有办法(如何)实现一个简化交换机使用的库,我的意思是代替它:
switch (value) {
case 0:
case 1:
console.log('0 Or 1');
break;
case 2:
case 3:
console.log('2 Or 3');
break;
default:
console.warn("I don't know");
}
我们这样做:
switch (value) {
case 0 || 1: // value === 1 || value === 2 ...
console.log('0 Or 1');
break;
case 2 || 3:
console.log('2 Or 3');
break;
default:
console.warn("I don't know");
}
答案 0 :(得分:2)
这是可能的,你只需要切换true
而不是值,并在case
表达式中进行比较:
function testSwitch(value) {
switch (true) {
case [0,1].includes(value): // value === 1 || value === 2 ...
console.log('0 Or 1');
break;
case [2,3].includes(value):
console.log('2 Or 3');
break;
default:
console.warn("I don't know");
}
}
testSwitch(1)
testSwitch(2)
testSwitch(4)
答案 1 :(得分:0)
使用switch(true){...},如下所示
var value = parseInt(prompt("Enter a number"));
switch (true) {
case value === 0 || value === 1:
console.log('0 Or 1');
break;
case value === 2 || value === 3:
console.log('2 Or 3');
break;
default:
console.warn("I don't know");
}

答案 2 :(得分:0)
您可以switch
使用预处理的value
,而不是原来的value
。
请注意: 虽然你的例子感觉相当骇人听闻,但在大多数情况下都是最明智的解决方案。
function test(value) {
switch (Math.floor(value / 2)) {
case 0:
return ('0 or 1');
case 1:
return ('2 or 3');
default:
return ("I don't know");
}
}
[0, 1, 2, 3].forEach(v => {
console.log(`value: ${v}, result: ${test(v)}`);
});