検索

ホームページ  >  に質問  >  本文

javascript - 変数をオブジェクトのキーとして使用し、それを配列にプッシュするにはどうすればよいですか?

a と b のキーはすべて等しいです

リーリー

あるいは、より優れた、より効率的で、より素晴らしい方法はありますか?

私が達成したい効果はこれです

リーリー

この問題の根本は、オブジェクトを宣言するときに変数をキーとして使用する方法にあります。

世界只因有你世界只因有你2757日前1560

全員に返信(4)返信します

  • PHP中文网

    PHP中文网2017-07-05 11:02:13

    ES6 では、オブジェクトのプロパティ名として 表达式 を使用して、オブジェクトを定義するときにリテラルを使用できるようになります

    リーリー

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-05 11:02:13

    質問の説明を修正してから回答してください

    この問題の根本は、オブジェクトを宣言するときに変数をキーとして使用する方法です

    変数が文字列または数値の場合

    リーリー

    変数がオブジェクトの場合

    次に、ES6 Mapを使用する必要があります

    前のメソッドのスーパーセットです

    を見てください。 リーリー

    スクリーンショット


    新しい書き方

    リーリー

    使用reduce

    リーリー

    スクリーンショット


    修正前

    リーリー

    達成しました

    うーん。 。問題の説明を長い間読んだ後、何をしたいのかよくわかりません

    関数名とbefore afterから推測してみましょう。オブジェクトaとオブジェクトbの異なる属性と値をそれぞれbeforeとafterに入れますか? その場合は、以下のコードを見てください

    リーリー

    スクリーンショット

    返事
    0
  • 欧阳克

    欧阳克2017-07-05 11:02:13

    実際、あなたの質問は
    この質問に要約されます:

    リーリー

    key は文字列 "key" に解析され、期待される変数は key です (例: key="abc",value="123"<) /code> "key",期望是变量key 例当key="abc",value="123"
    上述实际变成{"key":"123"} 应该是{"abc":"123"}
    最直接的答案是 var o = {}; o[key] = value; ret.push(o); 上記は実際には {"key":"123"} となり、{"abc":"123"} となるはずです
    最も直接的な答えは < code>var o = {};
    ; しかし、もっと簡単な方法はありますか?

    議論の結果は以下の通りです

    リーリー
    注: 上記の回答は時系列でリストされていますが、どれも完全に試したものではありません。重要なのは、アイデアを学ぶことです。

    どのソリューションを選択するかについては、シンプルさ、パフォーマンス、読みやすさに基づいて比較検討したいと思います

    人によって意見が異なります。

    これは QQ グループでのディスカッションの要約です。私はただのポーターです。 🎜

    返事
    0
  • typecho

    typecho2017-07-05 11:02:13

    ES6 はオブジェクトのプロパティを変数としてサポートしており、その記述方法は次のとおりです:

    リーリー

    プッシュパラメータでは、この記述方法を使用するだけです。

    返事
    0
  • キャンセル返事