J'ai un Map
comme ceci:
const m = new Map();
m.set('key1', {})
.
m.set('keyN' {})
Map
peut avoir 1 ou plusieurs éléments. Puis-je obtenir le premier élément par index, sans m.get('key1')
et sans boucle d'itérateur?
comme: m.get()[0]
Utilisez la fonction Map.prototype.entries
, comme ceci
const m = new Map();
m.set('key1', {})
m.set('keyN', {})
console.log(m.entries().next().value); // [ 'key1', {} ]
Si vous voulez obtenir la première clé, utilisez alors Map.prototype.keys
, comme ceci
console.log(m.keys().next().value); // key1
De même, si vous souhaitez obtenir la première valeur, vous pouvez utiliser Map.prototype.values
, comme ceci
console.log(m.values().next().value); // {}
La raison pour laquelle nous devons appeler next()
sur les valeurs renvoyées est que toutes ces fonctions retournent itérateurs . En savoir plus sur le protocole d'itération ici .
Pour l'exemple spécifique dont vous vous interrogez, la déstructuration serait parfaite.
let m = new Map();
m.set('key1', {});
m.set('key2', {});
let [[, obj]] = m;
par exemple.
let [pair] = m;
let [key, obj] = pair;
est une option pour déstructurer puis saisir la valeur, mais l'option la plus simple serait
let [obj] = m.values();
En outre, cela est correct à la fois pour Set
et Map
: vous pouvez convertir n'importe quoi en Array
puis obtenir n'importe quel élément par son index. Quelque chose comme ça:
let m = new Map();
m.set('key1', {});
m.set('key2', {});
Array.from(m)[0]; // ['key1', {}]