[英](Javascript) multiple condition set for ternary operator issue
for (var days = 1; days <= 31; ++days) {
console.log(
(days == (1, 31, 21) ? days + 'st':'') ||
(days == (2, 22) ? days + 'nd':'') ||
(days == (3, 23) ? days + 'rd':'') ||
days + 'th'
);
}
試圖顯示(1st, 2nd, 3rd)
(21st, 22nd, 23rd)
(31st)
(multiple th)
然而我在這里得到一個奇怪的結果,我不太確定我做錯了什么,任何幫助都會不勝感激。
我確實嘗試谷歌並想出這個,承諾,只是會欣賞一個相對詳細的解釋,為什么它的行為奇怪。
你輸入了一些在語法上正確的代碼,但它並不意味着你所希望它的含義。
這個:
(days == (1, 31, 21) ? days + 'st':'')
實際上完全一樣
(days == 21 ? days + 'st':'')
(1, 31, 21)
1,31,21 (1, 31, 21)
子表達式涉及逗號運算符,它允許計算一系列表達式(可能帶有副作用)。 總值是最后一個表達式的值。
如果要將值與可能性列表進行比較,通常可以
||
連接的==
(或===
)比較序列 ; case
子句組的switch
語句; .indexOf()
來查找數組中的值。 在這種特殊情況下,我可能會創建一個包含后綴的數組,然后將其編入索引:
var suffixes = Array.apply(null, new Array(32)).map(function() { return "th"; });
suffixes[2] = suffixes[22] = "nd";
suffixes[1] = suffixes[21] = suffixes[31] = "st";
suffixes[3] = suffixes[23] = "rd";
然后,您可以按天數索引數組以獲取后綴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.