-1
votes

Opérateur conditionnel ne fonctionne pas comme prévu dans JavaScript

L'opérateur conditionnel ci-dessous ne fonctionne pas comme prévu J'ai inclus les conditions dans le scénario basées sur le scénario.

Si aucun match de SRC ou de goudron doit être tarifaire = 0 p>

si SRC est présent dans Art code> et est SGD code> et src est présent dans arr code> et est sgd code> (vice-versa), tarifez 0,4 p>

si SRC est présent dans Arr code> et est "EUR" || "GBP" || "USD" code> et tar est présent dans ar code> et est "sgd" code>, (vice-versa), tarifez 0,3 p>

si SRC est présent dans ARR CODE> et TRAIL est présent dans Arr code> doit être 0.5 P>

scénario: p>

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;



2 commentaires

Ce n'est pas la bonne façon d'écrire une condition: (tar === "EUR" || "GBP" || "USD")) . Cela évaluera toujours comme vrai.


Vous n'avez pas besoin de nier des missions dans les opérandes ternaires. Vous pouvez faire var res = cond? 0.4: Donc sur


3 Réponses :


0
votes

Vous devez ajouter le goudron === pour chaque condition: xxx

Alternativement, utilisez inclut : xxx


0 commentaires

1
votes

Vous avez utilisé vous ou la condition sans vérifier avec une variable. juste comme "USD" || "GBP" code> qui retournera true code> toujours.

Et vous avez une autre erreur, vous devez vérifier comme array.index (variable) code>. Mais vous avez vérifié comme p> xxx pré>

J'ai ajouté un extrait de démo s'il vous plaît vérifier. p>

J'ai utilisé cette condition particulière comme. P>

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)


3 commentaires

Merci mais si SRC = "AUD" && TAR "DKK" devrait être de 0,5, mais retourne 0.


Le code est correct désolé, "AUD" n'était pas présent dans ARR qui retourne 0


et vous avez une autre erreur que vous devriez CHCK comme array.index (variable) . Mais YPU fait le contraire. Mise à jour de ma réponse avec TAT aussi.



0
votes

Vous pouvez prendre une fonction qui retourne une valeur tôt, si une condition correspond à xxx

en courte xxx


3 commentaires

Merci mais si SRC = "AUD" && TAR "DKK" devrait être de 0,5, mais retourne 0.


C'est vrai, il n'y a pas de condition pour 'dkk' dans le code donné.


Merci, le code est correct désolé, "AUD" n'était pas présent dans ARRS Y retourne 0