![](/img/trans.png)
[英]The Conditional (Ternary) Operator is not working as expected(Javascript)
[英]Conditional Operator not working as expected in javascript
以下條件運算符未按預期工作,我已在基於場景的條件中包括了條件。
如果沒有src或tar匹配,則應為rate = 0
如果src存在於arr
且為SGD
而src存在於arr
且為SGD
(反之亦然),則費率為0.4
如果src存在於arr
且為"EUR" || "GBP" || "USD"
"EUR" || "GBP" || "USD"
"EUR" || "GBP" || "USD"
arr
"EUR" || "GBP" || "USD"
和tar,且"SGD"
(反之亦然),匯率為0.3
如果src為存在於arr
和焦油的存在arr
率應為0.5
場景:
(src==="SGD" and tar==="AUD") or (src==="AUD" && tar==="SGD") => rate="0.4"
src === "SGD") and (tar === "EUR" or "GBP" or "USD") => rate=0.3
(src==`arr` values and tar==`arr` values)=> rate=0.5
(src no match arr && tar no match arr)=> rate=0
var arr =["AED","BGN","CAD","CHF","CZK","DKK","HKD","HUF","ILS","INR",
"JPY","MXN","NOK","NZD","PLN","QAR","RON","SAR","SEK","THB","TRY","ZAR"];
I tried , but not working if src="SGD" and tar="CNY" it should rate =0
var res=
((src === "SGD" && tar === "AUD") || (src === "AUD" && tar === "SGD"))?
rate = 0.4 :
((src === "SGD" && (tar === "EUR" || "GBP" || "USD")) ||
((src === "EUR" || "GBP" || "USD") && tar === "SGD"))?
rate = 0.3:
(src.indexOf(arr)!=-1 && tar.indexOf(arr)!=-1) ?
rate = 0.5 :
rate=0;
您使用了您或您的條件而未使用變量進行檢查。 就像"USD" || "GBP"
"USD" || "GBP"
將始終返回true
。
並且還有另一個錯誤,您應該檢查類似array.index(variable)
。 但你檢查像
src.indexOf(arr)!=-1 && tar.indexOf(arr)!=-1
我添加了一個演示代碼段,請檢查一下。
我使用了這種特殊條件。
(tar === "EUR" || tar === "GBP" || tar === "USD"))
var tar = "DKK"; var src = "AUD"; var arr =["AUD","DKK","AED","BGN","CAD","CHF","CZK","DKK","HKD","HUF","ILS","INR", "JPY","MXN","NOK","NZD","PLN","QAR","RON","SAR","SEK","THB","TRY","ZAR"]; var res= ((src === "SGD" && tar === "AUD") || (src === "AUD" && tar === "SGD"))? rate = 0.4 : ((src === "SGD" && (tar === "EUR" || tar === "GBP" || tar === "USD")) || ((src === "EUR" || "GBP" || "USD") && tar === "SGD"))? rate = 0.3: (arr.indexOf(src)!=-1 && arr.indexOf(tar)!=-1) ? rate = 0.5 : rate=0; console.log(res)
您需要為每個條件添加tar ===
:
(tar === "EUR" || tar === "GBP" || tar === "USD")
另外,用途includes
:
(["EUR", "GBP", "USD"].includes(tar))
如果條件匹配,您可以采用一個可以盡早返回值的函數
function check() {
const group = ["EUR", "GBP", "USD"];
if (src === "SGD" && tar === "AUD" || src === "AUD" && tar === "SGD") return 0.4;
if (src === "SGD" && group.includes(tar) || group.includes(src) && tar === "SGD") return 0.3;
if (arr.includes(src) && arr.includes(tar)) return 0.5;
return 0;
}
簡而言之
var rate = src === "SGD" && tar === "AUD" || src === "AUD" && tar === "SGD"
? 0.4
: src === "SGD" && ["EUR", "GBP", "USD"].includes(tar) || ["EUR", "GBP", "USD"].includes(src) && tar === "SGD"
? 0.3
: arr.includes(src) && arr.includes(tar)
? 0.5
: 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.