两个三元表达式合二为一

时间:2012-09-27 01:29:10

标签: javascript ternary-operator

我试图在一个表达式中表达这两个三元运算符。有人能帮助我吗?

    var longer = a.length > b.length ? a: b;
    var shorter = a.length > b.length ? b : a;

谢谢!

5 个答案:

答案 0 :(得分:3)

您可以在JavaScript 1.7(现在为1.8.5)之后执行此操作:Destructuring assignment (Merge into own page/section)

每个人都可以(可能)想象cross-browser compatibility is abysmal。但由于这是一个家庭作业问题,我将把它留在这里作为答案。

答案 1 :(得分:2)

如果你计划在表达式中声明两个变量,那是不可能的。

答案 2 :(得分:0)

你可以使第一个表达式成为嵌套作为第二个表达式的赋值....但在这种情况下,我认为你应该保留两个单独的行,以避免混淆你的代码。嵌套三元组不会给你带来性能提升,因此没有用处。

答案 3 :(得分:0)

具有2个值的最清晰的解决方案将是(可能必须调整语法):

[shorter, longer] = [a, b].sort(function(a, b) {return a.length > b.length});

答案 4 :(得分:0)

我看到这个问题已经回答了。但是,我尝试了它很有趣,

shorter = ((a.length < b.length) && (longer = b))||((longer = a)&&false) ? a: b;

更新:

正如@MattWhipple建议的那样,你可以缩短它(你可能会在控制台中看到警告)

((a.length < b.length) && (shorter = a) && (longer = b)) || ((shorter = b) && (longer = a))