簡體   English   中英

條件運算符無法按預期在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.

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