簡體   English   中英

兩個三元運算符如何在 JS 中協同工作?

[英]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為假時才生效。 在第二個條件中,如果r1 ,則返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM