(Javascript)三值运算符问题的多个条件集 for(var days=1;days

(Javascript)三值运算符问题的多个条件集 for(var days=1;days,javascript,conditional,ternary-operator,Javascript,Conditional,Ternary Operator,您键入了一些语法正确的代码,但它的含义与您显然期望的含义不同 这: 实际上与 (days == (1, 31, 21) ? days + 'st':'') (1,31,21)子表达式包含逗号运算符,它允许计算表达式序列(可能有副作用)。总值是最后一个表达式的值 如果要将一个值与一系列可能性进行比较,通常可以 使用由|连接的一系列==(或===)比较 将switch语句与case子句组一起使用 使用.indexOf()在数组中查找值 在这种情况下,我可能会创建一个包含后缀的数组,然后索引到其

您键入了一些语法正确的代码,但它的含义与您显然期望的含义不同

这:

实际上与

(days == (1, 31, 21) ? days + 'st':'')
(1,31,21)
子表达式包含逗号运算符,它允许计算表达式序列(可能有副作用)。总值是最后一个表达式的值

如果要将一个值与一系列可能性进行比较,通常可以

  • 使用由
    |
    连接的一系列
    ==
    (或
    ===
    )比较
  • switch
    语句与
    case
    子句组一起使用
  • 使用
    .indexOf()
    在数组中查找值
在这种情况下,我可能会创建一个包含后缀的数组,然后索引到其中:

(days == 21 ? days + 'st':'')

然后,您可以按天数索引到数组中以获得后缀。

我建议您先在
if
s中填写完整的代码。如果必须,然后尝试使用三元运算符缩短代码。此外,
days==(1,31,21)
不起作用。虽然它的语法不是无效的,但它不会做您希望它做的事情。@Cerburs,谢谢您的回复,我现在知道该怎么做了:)替代:
((天%10==1&&days!==11)?天+'st':'')对!有道理,谢谢你的解释(反应也很快!)
(days == 21 ? days + 'st':'')
var suffixes = Array.apply(null, new Array(32)).map(function() { return "th"; });
suffixes[2] = suffixes[22] = "nd";
suffixes[1] = suffixes[21] = suffixes[31] = "st";
suffixes[3] = suffixes[23] = "rd";