我有一個專案的以下代碼:
setTweetLibrary((curr) => {
if (!curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id)) {
console.log("update");
return saved_tweets;
} else {
console.log("not update");
return curr;
}
});
我想將其轉換為帶有問號(“?”)的三元運算子以使其更整潔,但我不知道如何。任何人都可以建議嗎?謝謝!
我想我只是對具有多個條件和值的三元運算子的語法感到非常困惑
uj5u.com熱心網友回復:
作為三元,它看起來像這樣:
setTweetLibrary((curr) => {
return !curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id)
? saved_tweets
: curr;
});
請注意,console.logs 沒有更多位置。但他們似乎無論如何都在除錯。
uj5u.com熱心網友回復:
三元運算子不是 if 陳述句的通用替代品,僅用于在前往同一目的地的運算式之間進行選擇。
如果我們取出日志,兩個分支都回傳一個變數:
if (!curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id)) {
return saved_tweets;
} else {
return curr;
}
條件是一個長運算式這一事實沒有任何區別,它仍然等價于:
if (some_condition_goes_here) {
return saved_tweets;
} else {
return curr;
}
在這種情況下,您可以使用三元運算子在兩者之間進行選擇 - 將 thereturn
移到 is 所在的if
位置,并將 the ?
and移到:
兩個值之前。然后將整個事情放在括號中以確保整個事情在之前計算return
:
return (
(some_condition_goes_here)
? saved_tweets
: curr
);
具體來說:
return (
(!curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id))
? saved_tweets
: curr
);
也可以在那里添加日志記錄,但它比僅使用普通 if 陳述句更難閱讀,所以如果你想要 - 或任何其他邏輯 - 只需堅持使用if...else
.
uj5u.com熱心網友回復:
這有效
return (!curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id) ? saved_tweets : curr)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450914.html
標籤:javascript if 语句 条件运算符
上一篇:當兩個物件具有相同的鍵時,如何根據另一個物件中給出的標準對來自物件的資料進行分類?
下一篇:請問(PDOException$e)和PDOException($e->getMessage(),(int)$e->getCode())是什么意思?