JS Ternary具有多种条件?

use*_*442 9 javascript conditional if-statement ternary-operator

我一直在JavaScript中使用三元运算符来根据用户输入修改对象的值.我有以下代码,它应该运行:

var inputOneAns = inputOne == "Yes" ? "517" : "518";
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在inputOneAns为用户是否输入"是"或"否" 分配数字字符串值.但是,可能存在用户未选择值的情况(因为不需要).如果此输入留空,我想为其分配一个空字符串"" inputOneAns.有没有方法或我将三元运算符嵌入另一个三元运算符?为了帮助澄清,这里有与我的三元函数同时使用if else语句的函数.

if (inputOne == "Yes"){
    var inputOneAns = "517"
}else if (inputOne == "No"{
    var inputOneAns = "518"
}else{
    var inputOneAns = ""
}
Run Code Online (Sandbox Code Playgroud)

是否可以将多个表达式包含在三元函数中?有没有更好的方法来完成我正在寻找的东西?提前感谢您的提示.

Dam*_*mon 18

是的,你可以去野生筑巢三角.我发现这个版本相当可读:

var foo = (
  bar === 'a' ? 1 : // if 
  bar === 'b' ? 2 : // else if 
  bar === 'c' ? 3 : // else if
  null // else 
);
Run Code Online (Sandbox Code Playgroud)

但这不是一个广泛分享的观点,你应该坚持if/elseswitch在团队工作时.


Md *_*hid 7

是的,您可以在三元运算符中使用多个条件。希望这会帮助你。

var x=20;
var y = x<13 ? "Child" : x<20 ? "Teenage" : x<30 ? "Twenties" : "Old people";
console.log(y);
Run Code Online (Sandbox Code Playgroud)


Mos*_*ini 6

最优雅、最干净的方法是利用对象文字:

const Switch = (str) => ({
  "Yes": "517",
  "No": "518",
})[str] || '';

console.log(Switch("Yes")); // 517
console.log(Switch("No"));  // 518
console.log(Switch("Non matching value")); // Empty
Run Code Online (Sandbox Code Playgroud)

这样做的优点是可读且灵活。


Ram*_* C. 5

在这种情况下,switch 语句可能是最佳选择。

let inputOneAns;
switch(inputOne) {
  case "Yes":
   inputOneAns = "517";
   break;
  case "No":
   inputOneNas = "518";
   break;
  default:
   inputOneNas = "";
}
Run Code Online (Sandbox Code Playgroud)

如果您可以进行超过 2 个条件的三元运算,它们将变得非常混乱。你可以把条件放在一起,但我不知道你为什么想要那样 - 那会非常混乱。