我试图在一个表达式中表达这两个三元运算符。有人能帮助我吗?
var longer = a.length > b.length ? a: b;
var shorter = a.length > b.length ? b : a;
谢谢!
答案 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))