次のようなMap
があります。
_const m = new Map();
m.set('key1', {})
.
m.set('keyN' {})
_
Map
には1つ以上のアイテムを含めることができます。 m.get('key1')
およびイテレータループなしで、インデックスによって最初のアイテムを取得できますか?
のような:m.get()[0]
このように _Map.prototype.entries
_ 関数を使用します
_const m = new Map();
m.set('key1', {})
m.set('keyN', {})
console.log(m.entries().next().value); // [ 'key1', {} ]
_
最初のキーを取得する場合は、次のように _Map.prototype.keys
_ を使用します
_console.log(m.keys().next().value); // key1
_
同様に、最初の値を取得したい場合は、このように _Map.prototype.values
_ を使用できます
_console.log(m.values().next().value); // {}
_
戻り値でnext()
を呼び出さなければならない理由は、これらのすべての関数が iterators を返すためです。反復プロトコルの詳細を読む こちら 。
あなたが疑問に思っている特定の例については、破壊は完璧でしょう。
let m = new Map();
m.set('key1', {});
m.set('key2', {});
let [[, obj]] = m;
例えば.
let [pair] = m;
let [key, obj] = pair;
解体してから値を取得する1つのオプションですが、より簡単なオプションは
let [obj] = m.values();
また、それはSet
とMap
の両方に対して正しいです。つまり、何でもArray
に変換してから、そのインデックスで任意の要素を取得できます。このようなもの:
let m = new Map();
m.set('key1', {});
m.set('key2', {});
Array.from(m)[0]; // ['key1', {}]