gpt4 book ai didi

javascript - 在 es6 中使用解构 switch 语句

转载 作者:行者123 更新时间:2023-11-30 11:25:38 24 4
gpt4 key购买 nike

有没有办法在 switch ... case 语句中使用解构特性而不是使用嵌套的 if else 语句??

例如我会期待这样的事情:

const tall = true;
const clean = true;

switch ([tall, clean]) {
case [true,true]:
console.log("Perfect");
break;
case [false,true]:
console.log("Ok");
break;
case [true,false]:
console.log("Not so good");
break;
default:
console.log("Terrible");
}

而不是使用:

if (tall){
if (clean){
...
}else{
...
}
}else{
if (clean){
...
}else{
...
}
}

最佳答案

不,这与解构无关,不,你不能在 switch 中使用数组字面量声明,因为不同的对象永远不会比较相等。

在您的情况下,您可以做的是将您的两个 bool 值映射到一个整数分数:

switch (clean * 2 + tall) {
case 3:
console.log("Perfect");
break;
case 2:
console.log("Ok");
break;
case 1:
console.log("Not so good");
break;
case 0:
console.log("Terrible");
}

或等效的数组查找:

console.log(["Terrible", "Not so good", "Ok", "Perfect"][clean * 2 + tall]);

您甚至可能想让按位魔术更加明显:

switch (tall << 1 | clean << 0) {
case true << 1 | true << 0:
console.log("Perfect");
break;
case false << 1 | true << 0:
console.log("Ok");
break;
case true << 1 | false << 0:
console.log("Not so good");
break;
case false << 1 | false << 0:
console.log("Terrible");
break;
}

您也可以调用助手function score(a, b) { return a << 1 | b << 0 }switchcase

关于javascript - 在 es6 中使用解构 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48129331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com