[英]How do two ternary operators work together in JS?
所以我在網上做一個代碼問題,其中一個解決方案顯示了以下內容
function electionsWinners(votes, k) {
var max=Math.max(...votes)
var r=votes.filter(x=>x+k>max||x===max).length
return k?r:r==1?1:0
}
我不認為問題的具體細節是相關的,我對 return 語句的工作方式更感興趣。 我完全不明白返回了什么,似乎正在使用 2 個三元運算符,但我不確定,有人能幫我理解這個 return 語句的功能嗎?
你可以看看
k?r:r==1?1:0
作為一個單一的表達。 每個?
連接到它緊隨其后的:
,所以它等價於:
k ? r : (r==1 ? 1 : 0)
其中第二個條件運算符僅在k
為假時才生效。 在第二個條件中,如果r
是1
,則返回1
,否則返回0
。
縮進可能更清楚:
return (k
? r
: (r == 1
? 1
: 0
)
);
是 2 個三元運算符返回 k?r:r==1?1:0
我會把代碼加上完整的 IF
if(k) //not is null
return r;
else
{
if(r==1)
return 1;
else
return 0;
}
如果您將其轉換為 if else 語句,那么您將更好地了解發生了什么:
if (k) {
return r;
} else if (r === 1) {
return 1;
} else {
return 0;
}
或者
if (k) {
return r;
}
if (r === 1) {
return 1;
}
return 0;
第一個測試是k ?
k 不是 0/未定義/空嗎? 如果是,返回 r (r)
else :
如果 r 是 1 (r==1 ?)
返回 1 (1)
否則返回 0 (0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.