在一行中写两个案例的if-else语句的短缺
Write Shortage of if-else statement with two cases in one line
有一个javascript表达式将name
变量分配给renamed
变量。只有一个例外:
renamed = name == 'John' ? 'Johnny' : name;
然而,我想要两个除外条款:
- 将John改名为Johny
- 将亚历克斯改名为亚历山大
- 所有其他名称都被分配,没有任何更改
有可能把这个表达式写成一个字符串吗?
renamed = (name == 'John' || name == 'Alex') ? <____> : name;
我需要一气呵成。
谢谢。
(name === 'John' && 'Johny') || (name === 'Alex' && 'Alexander') || name;
如果
name
是John
,则转到&&
表达式的下一部分并返回Johny
。如果
name
是Alex
,则第一种情况下的类似情况返回Alexander
。如果两者都不为真,则原样返回
name
。
演示
这个解决方案之所以有效,是因为在JavaScript中,&&
运算符计算左边的表达式,如果它是false,那么将返回值,而根本不会计算右边的表达式。
如果左边的表达式计算结果为Truthy,那么右边的表达式将被计算,结果将按原样返回。例如
console.log(1 && 2);
# 2
console.log(0 && 2);
# 0
它首先评估1
,它是Truthy,因此评估2
并返回值。这就是它打印2
的原因。
在第二种情况下,0
被评估为Falsy。因此,它会立即返回。这就是它打印0
的原因。
与相同
console.log("John" && "Johny");
# Johny
John
将被评估为Truthy,因此Johny
也将被评估并返回。这就是我们得到Johny
的原因。
根据ECMA 5.1标准,将根据下表确定对象的真实性
+-----------------------------------------------------------------------+
| Argument Type | Result |
|:--------------|------------------------------------------------------:|
| Undefined | false |
|---------------|-------------------------------------------------------|
| Null | false |
|---------------|-------------------------------------------------------|
| Boolean | The result equals the input argument (no conversion). |
|---------------|-------------------------------------------------------|
| Number | The result is false if the argument is +0, −0, or NaN;|
| | otherwise the result is true. |
|---------------|-------------------------------------------------------|
| String | The result is false if the argument is the empty |
| | String (its length is zero); otherwise the result is |
| | true. |
|---------------|-------------------------------------------------------|
| Object | true |
+-----------------------------------------------------------------------+
注意:最后一行Object
,包括对象和数组。
renamed = (name == 'john') ? 'johney': (name == 'alex'? 'alexander' : name);
你可以试试这个:
renamed = (name == 'John' ? 'Johnny' : (name == 'Alex' ? 'Alexander' : name));
相关文章:
- 如何在ReactJS JSX中执行嵌套的if-else语句
- Javascript Return and if/else
- JavaScript if-else 速记错误
- 如何检查if/else语句中的随机条件
- 在javascript中创建数组,而不是if.else
- Javascript If else 只返回 TRUE 或只返回 FALSE
- jquery if else不返回警报消息
- 在Javascript中为if/else语句添加OR
- If Else Java Script HTML
- jQuery/Javascript foreach If/Else |如果为空(不执行任何操作)Else(显示forea
- 我应该如何应用if-else条件来向具有不同用户角色的人显示不同的菜单
- geoTest函数-创建if/else语句
- JavaScript中的温度转换器(IF ELSE条件)
- Jquery/Javascript使用IF/ELSE语句更改img SRC
- 编写if-else语句的更好方法
- 在if/else语句中显示DIV
- PHP If Else-隐藏按钮
- JavaScript if/else未按预期操作
- Javascript 在 if else 语句中执行多个案例
- 在一行中写两个案例的if-else语句的短缺