我试图在一个表达式中表达这两个三元运算符。有人能帮我吗?
var longer = a.length > b.length ? a: b;
var shorter = a.length > b.length ? b : a;
谢谢!
我试图在一个表达式中表达这两个三元运算符。有人能帮我吗?
var longer = a.length > b.length ? a: b;
var shorter = a.length > b.length ? b : a;
谢谢!
您可以从 JavaScript 1.7(现在是 1.8.5)开始执行此操作:解构赋值(合并到自己的页面/部分)。
正如每个人都可以(可能)想象的那样,跨浏览器的兼容性非常糟糕。但由于这是一个家庭作业问题,我将把它留在这里作为答案。
如果您打算在表达式中声明这两个变量,这是不可能的。
您可以将第一个表达式设置为嵌套作为第二个条件的赋值......但在这种情况下,我认为您应该保留两个单独的行以避免混淆您的代码。嵌套三元组不会给您带来性能提升,因此没有任何用处。
具有 2 个值的最清晰的解决方案类似于(可能需要调整语法):
[shorter, longer] = [a, b].sort(function(a, b) {return a.length > b.length});
我看到这个问题已经回答了。但是,我为了好玩而尝试过,
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))