3

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

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

谢谢!

4

5 回答 5

3

您可以从 JavaScript 1.7(现在是 1.8.5)开始执行此操作:解构赋值(合并到自己的页面/部分)

正如每个人都可以(可能)想象的那样,跨浏览器的兼容性非常糟糕。但由于这是一个家庭作业问题,我将把它留在这里作为答案。

于 2012-09-27T01:32:56.227 回答
2

如果您打算在表达式中声明这两个变量,这是不可能的。

于 2012-09-27T01:35:10.483 回答
0

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

于 2012-09-27T01:39:31.030 回答
0

具有 2 个值的最清晰的解决方案类似于(可能需要调整语法):

[shorter, longer] = [a, b].sort(function(a, b) {return a.length > b.length});
于 2012-09-27T01:42:21.250 回答
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))
于 2012-09-27T02:02:48.667 回答