试图弄清楚如何在三元运算符中转换long if语句

问题描述 投票:0回答:1

我在网上找到了此代码段,并试图弄清楚如何在if语句中将其翻译为计划:

return a.price > b.price ? 1 : a.price === b.price ? a.name > b.name ? 1 : -1 : -1;

我认为,如果我写了if语句:

if (a.price > b.price) {
    return 1;
} else if (a.price === b.price) {
    return 1;
} else if (a.name > b.name) {
    return 1;
} else {
    return -1;
}

但是我不太确定这是什么意思,问号又是问号,冒号是同样的问题。我知道,在这种情况下,冒号可以是else if语句(按此顺序),但是问号呢?有什么提示吗?

javascript if-statement ternary
1个回答
0
投票
a.price === b.price ? a.name > b.name ? 1 : -1 : -1;

分离出来,看起来像:

a.price === b.price
? a.name > b.name
  ? 1
  : -1
: -1;

内部条件为b.name ? 1 : -1

如果价格不相等,则返回-1。否则,将比较名称。要正确翻译:

if (a.price > b.price) { return 1; } if (a.price !== b.price) { return -1; } if (a.name > b.name) { return 1; } return -1;

© www.soinside.com 2019 - 2024. All rights reserved.