50

Javascriptオブジェクトを作成する一般的な方法は次のとおりです。

var map = new Object();
map[myKey1] = myObj1;
map[myKey2] = myObj2;

キーと値の両方が文字列であるようなマップを作成する必要があります。マップに追加するペアの大規模で静的なセットがあります。

Javascriptでこのようなことを実行する方法はありますか?

var map =  { { "aaa", "rrr" }, { "bbb", "ppp" } ... };

または、エントリごとに次のようなことを実行する必要がありますか?

map["aaa"]="rrr";
map["bbb"]="ppp";
...

基本的に、残りのJavascriptコードはこのマップをループし、「実行時に」既知の基準に従って値を抽出します。このループジョブのより良いデータ構造があれば、私も興味があります。私の目的は、コードを最小限に抑えることです。

4

6 に答える 6

150

ES2015、別名ES6バージョンのJavaScriptでは、と呼ばれる新しいデータ型Mapが導入されています。

let map = new Map([["key1", "value1"], ["key2", "value2"]]);
map.get("key1"); // => value1

詳細については、このリファレンスを確認してください。

于 2016-03-12T19:22:56.043 に答える
48

JavaScriptのオブジェクトリテラル構文は、通常、オブジェクトをインスタンス化するために使用されます(真剣に、誰もnew Objectorを使用しませんnew Array)。

var obj = {
    'key': 'value',
    'another key': 'another value',
     anUnquotedKey: 'more value!'
};

アレイの場合は次のとおりです。

var arr = [
    'value',
    'another value',
    'even more values'
];

オブジェクト内にオブジェクトが必要な場合は、それでも構いません。

var obj = {
    'subObject': {
        'key': 'value'
    },
    'another object': {
         'some key': 'some value',
         'another key': 'another value',
         'an array': [ 'this', 'is', 'ok', 'as', 'well' ]
    }
}

静的データをインスタンス化できるこの便利な方法が、 JSONデータ形式につながったのです。

JSONはもう少し扱いに​​くいので、キーは文字列値と同様に二重引用符で囲む必要があります。

{"foo":"bar", "keyWithIntegerValue":123}
于 2013-02-05T16:18:55.017 に答える
5

オブジェクトリテラル表記で正常に機能します。

var map = { key : { "aaa", "rrr" }, 
            key2: { "bbb", "ppp" } // trailing comma leads to syntax error in IE!
          }

ところで、配列をインスタンス化する一般的な方法

var array = [];
// directly with values:
var array = [ "val1", "val2", 3 /*numbers may be unquoted*/, 5, "val5" ];

とオブジェクト

var object = {};

また、次のいずれかを実行できます。

obj.property     // this is prefered but you can also do
obj["property"]  // this is the way to go when you have the keyname stored in a var

var key = "property";
obj[key] // is the same like obj.property
于 2013-02-05T16:20:55.773 に答える
3

これを試してみてください:

var map = {"aaa": "rrr", "bbb": "ppp"};
于 2013-02-05T16:23:42.790 に答える
0

最初に記述した構文は無効です。次を使用して何かを達成できます。

var map =  {"aaa": "rrr", "bbb": "ppp" /* etc */ };
于 2013-02-05T16:21:23.630 に答える
0

このタイプスクリプトを試してください

const MAP: Record<string, string> = {
  key1: 'value1'
};

MAP[this.name]
于 2021-06-19T21:27:32.947 に答える