编写这个简写条件三元运算符来比较两个变量的正确方法是什么?

What's the proper way to write this short hand conditional ternary operator to compare two variables?

我不知道如何编写 shorthand 条件语句。这是代码示例:

const siteIdentifier = "bar";
const refOne = "foo";
const refTwo = "bar";

(siteIdentifier == refOne || refTwo) ? "primary" : "secondary";

我也尝试过使用 .match 和其他变体,但也没有成功。

我希望将 siteIdentifier 字符串与两个可能的字符串进行比较。如果字符串匹配,我们将返回 "primary"。如果两者之一不匹配,则 returns "secondary".

试试这个:

(siteIdentifier == refOne) ? "primary" : (siteIdentifier == refTwo ? "primary" : "secondary");

一种方法是

(siteIdentifier == refOne || siteIdentifier == refTwo) ? "primary" : "secondary";

...另一个可能(当你有很多字符串要匹配时更有用)

~[refOne, refTwo].indexOf(siteIdentifier) ? "primary" : "secondary";

相同
[refOne, refTwo].indexOf(siteIdentifier) >= 0 ? "primary" : "secondary";

为了完整起见,所有可能性都放在一起的对象。

const obj = { foo: 'primary', bar: 'primary', default: 'secondary'};
x = obj[siteIdentifier] || obj.default;