3

これらの2つの三項演算子を1つの式で表現しようとしています。誰かが私を助けることができますか?

    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) 以降で実行できます: Destructuring assignment (Merge into own page/section)

誰もが (おそらく) 想像できるように、ブラウザー間の互換性はひどいものです。しかし、これは宿題の質問なので、答えとしてここに残します。

于 2012-09-27T01:32:56.227 に答える
2

式で両方の変数を宣言する予定がある場合、それは不可能です。

于 2012-09-27T01:35:10.483 に答える
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 に答える
0

最初の式を、2 番目の条件としてネストされる代入にすることもできますが、この場合、コードの難読化を避けるために、2 つの行を別々に保持する必要があると思います。三項をネストしてもパフォーマンスは向上しないため、何の役にも立ちません。

于 2012-09-27T01:39:31.030 に答える