[英]Conditional Operator not working as expected in javascript
Below conditional operator is not working as expected I have included the conditions in scenario based. 以下条件运算符未按预期工作,我已在基于场景的条件中包括了条件。
If no src or tar matches, should be rate=0 如果没有src或tar匹配,则应为rate = 0
If src is present in arr
and is SGD
and src is present in arr
and is SGD
(vice-versa), rate be 0.4 如果src存在于
arr
且为SGD
而src存在于arr
且为SGD
(反之亦然),则费率为0.4
If src is present in arr
and is "EUR" || "GBP" || "USD"
如果src存在于
arr
且为"EUR" || "GBP" || "USD"
"EUR" || "GBP" || "USD"
"EUR" || "GBP" || "USD"
and tar is present in arr
and is "SGD"
,(vice-versa), rate be 0.3 "EUR" || "GBP" || "USD"
arr
"EUR" || "GBP" || "USD"
和tar,且"SGD"
(反之亦然),汇率为0.3
If src is present in arr
and tar is present in arr
rate should be 0.5 如果src为存在于
arr
和焦油的存在arr
率应为0.5
scenario: 场景:
(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;
You used you or condition without checking with a variable. 您使用了您或您的条件而未使用变量进行检查。 just like
"USD" || "GBP"
就像
"USD" || "GBP"
"USD" || "GBP"
which will return true
always. "USD" || "GBP"
将始终返回true
。
and you have another error you should check like array.index(variable)
. 并且还有另一个错误,您应该检查类似
array.index(variable)
。 but you checked like 但你检查像
src.indexOf(arr)!=-1 && tar.indexOf(arr)!=-1
I have added a demo snippet please check it. 我添加了一个演示代码段,请检查一下。
I used that particular condition like. 我使用了这种特殊条件。
(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)
You need to add the tar ===
for every condition: 您需要为每个条件添加
tar ===
:
(tar === "EUR" || tar === "GBP" || tar === "USD")
Alternatively, use includes
: 另外,用途
includes
:
(["EUR", "GBP", "USD"].includes(tar))
You could take a function which returns a value early, if a condition match 如果条件匹配,您可以采用一个可以尽早返回值的函数
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;
}
In short 简而言之
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.