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/else或switch在团队工作时.
是的,您可以在三元运算符中使用多个条件。希望这会帮助你。
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)
最优雅、最干净的方法是利用对象文字:
const Switch = (str) => ({
"Yes": "517",
"No": "518",
})[str] || '';
console.log(Switch("Yes")); // 517
console.log(Switch("No")); // 518
console.log(Switch("Non matching value")); // EmptyRun Code Online (Sandbox Code Playgroud)
这样做的优点是可读且灵活。
在这种情况下,switch 语句可能是最佳选择。
let inputOneAns;
switch(inputOne) {
case "Yes":
inputOneAns = "517";
break;
case "No":
inputOneNas = "518";
break;
default:
inputOneNas = "";
}
Run Code Online (Sandbox Code Playgroud)
如果您可以进行超过 2 个条件的三元运算,它们将变得非常混乱。你可以把条件放在一起,但我不知道你为什么想要那样 - 那会非常混乱。