これらの2つの三項演算子を1つの式で表現しようとしています。誰かが私を助けることができますか?
var longer = a.length > b.length ? a: b;
var shorter = a.length > b.length ? b : a;
ありがとう!
これらの2つの三項演算子を1つの式で表現しようとしています。誰かが私を助けることができますか?
var longer = a.length > b.length ? a: b;
var shorter = a.length > b.length ? b : a;
ありがとう!
これは、JavaScript 1.7 (現在は 1.8.5) 以降で実行できます: Destructuring assignment (Merge into own page/section)。
誰もが (おそらく) 想像できるように、ブラウザー間の互換性はひどいものです。しかし、これは宿題の質問なので、答えとしてここに残します。
式で両方の変数を宣言する予定がある場合、それは不可能です。
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))
最初の式を、2 番目の条件としてネストされる代入にすることもできますが、この場合、コードの難読化を避けるために、2 つの行を別々に保持する必要があると思います。三項をネストしてもパフォーマンスは向上しないため、何の役にも立ちません。