JavaScript中在? :语句中使用多个条件

3
需要检查三个条件,并根据条件为变量分配值。
if(a =="z1"){
   b = "one";
} else if(a =="z2"){
   b = "two";
} else if(a =="z3"){
   b = "three";
}

可以使用JavaScript中的 ?: 语句将其编写成单行代码吗?

1
Java !== JavaScript - Rayon
b=['one','two','three'][a[1]-1] - Washington Guedes
4个回答

6

是的,你可以使用条件(三元)运算符进行转换。

var a = "z3";
var b = a == "z1" ? "one" : a == "z2" ? "two" : a == "z3" ? "three" : "" ;

console.log(b);


注意:为了更好的可读性,建议使用if...else语句或者switch语句。尽管在处理复杂操作时需要使用括号来避免嵌套三元运算符引起的问题。


1
但是你不应该这样做! - Rayon
@Rayon:为什么不呢? - Pranav C Balan
  1. 不必要的
  2. 不可读的
  3. 与传统的 if-else 条件相比没有任何优势...
- Rayon
@Rayon:为了减少字符数量,这很有帮助。 - Pranav C Balan
离代码压缩更近了一步。:P - zer00ne
@zer00ne:也许那是他的需求吧 ;) - Pranav C Balan

1
你可以做到以下事情:

b = (a == "z1" ? "one" : (a == "z2" ? "two" : (a == "z3" ? "three" : undefined)))


1
var b = (a =="z1") ? "one" : ((a =="z2") ?"two":(a =="z3")?"three":null);

不要忘记,快速阅读这篇文章是很困难的。 对于一个if else块来说,使用它是完全可以的。


1
var b = a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) ;

a = "z1"

alert(a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) );

a = "z2"

alert(a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) );

a = "z3"

alert(a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) );

a = "z4"

alert(a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) );


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接