将稍微复杂的 "if" 语句转换为三元运算符
convert slightly complex "if" statement to ternary operator
我有以下项目代码:
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;
}
});
我想将其转换为带有问号(“?”)的三元运算符以使其更整洁,但我不知道如何操作。谁能建议?谢谢!
我想我真的很困惑具有多个条件和值的三元运算符的语法
作为三元,它看起来像这样:
setTweetLibrary((curr) => {
return !curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id)
? saved_tweets
: curr;
});
请注意,console.logs 没有更多位置。但他们似乎无论如何都在调试。
三元运算符不是 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;
}
在这种情况下,您可以使用三元运算符在两者之间 select - 将 return
移动到 if
所在的位置,然后 ?
和:
前两个值。然后将整个东西放在括号中以确保整个东西在 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
.
这个有效
return (!curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id) ? saved_tweets : curr)
我有以下项目代码:
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;
}
});
我想将其转换为带有问号(“?”)的三元运算符以使其更整洁,但我不知道如何操作。谁能建议?谢谢!
我想我真的很困惑具有多个条件和值的三元运算符的语法
作为三元,它看起来像这样:
setTweetLibrary((curr) => {
return !curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id)
? saved_tweets
: curr;
});
请注意,console.logs 没有更多位置。但他们似乎无论如何都在调试。
三元运算符不是 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;
}
在这种情况下,您可以使用三元运算符在两者之间 select - 将 return
移动到 if
所在的位置,然后 ?
和:
前两个值。然后将整个东西放在括号中以确保整个东西在 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
.
这个有效
return (!curr[0] || (curr[0] && curr[0].id !== saved_tweets[0].id) ? saved_tweets : curr)