Disons que j'ai la carte suivante:
let myMap = new Map().set('a', 1).set('b', 2);
Et je veux obtenir ['a', 'b'] sur la base de ce qui précède. Ma solution actuelle semble si longue et horrible.
let myMap = new Map().set('a', 1).set('b', 2);
let keys = [];
for (let key of myMap)
keys.push(key);
console.log(keys);
Il doit y avoir une meilleure façon, non?
javascript
dictionary
ecmascript-6
Lilleman
la source
la source
Array.from(Map.keys())
.Map
.Array.from(Map.values())
- si au cas où, vous avez besoin de valeurs, au lieu de clés.Réponses:
Map.keys()
renvoie unMapIterator
objet qui peut être converti enArray
utilisantArray.from
:EDIT: vous pouvez également convertir un objet itérable en tableau en utilisant la syntaxe étalée
la source
this.map.values().slice is not a function
. Je devrais peut-être mettre à jour.slice()
invocation est exécutée avant l'opérateur de propagation. Essayez[ ... Array.from(map.values()).slice(0) ]
const fooMap = new Map<number, string>(); const fooArray = [...fooMap.keys()];
le texte suivant: TS2461: Le type 'IterableIterator <numéro>' n'est pas un type de tableau. Ce n'est donc pas autorisé dans TypeScript. Array.from fonctionne comme prévu...."abc"
pour entrer["a","b","c"]
dans ES6, ce qui n'est pas possible dans TS...."abc"
ne fonctionne pas non plus...("abc")
dans la console Chrome, qui prend en charge ES6?Vous pouvez utiliser l'opérateur d'étalement pour convertir l' itérateur Map.keys () dans un tableau.
la source
Array.from(myMap.keys())
ne fonctionne pas dans les scripts d'application google.Essayer de l'utiliser entraîne l'erreur
TypeError: Cannot find function from in object function Array() { [native code for Array.Array, arity=1] }
.Pour obtenir une liste de clés dans GAS, procédez comme suit:
la source
map.keys()
valeur de retour n'est pas itérable.J'ai besoin de quelque chose de similaire avec la forme réactive angulaire:
la source
Pas exactement la meilleure réponse à la question, mais cette astuce
new Array(...someMap)
m'a sauvé quelques fois lorsque j'ai besoin de la clé et de la valeur pour générer le tableau nécessaire. Par exemple, lorsqu'il est nécessaire de créer des composants réactifs à partir d'un objet Map en fonction des valeurs de clé et de valeur.la source
OK, allons un peu plus loin et commençons par ce qui est Map pour ceux qui ne connaissent pas cette fonctionnalité en JavaScript ... MDN dit:
Comme vous l'avez mentionné, vous pouvez facilement créer une instance de Map en utilisant un nouveau mot-clé ... Dans votre cas:
Voyons donc ...
La façon dont vous avez mentionné est une bonne façon de le faire, mais oui, il existe des moyens plus concis de le faire ...
La carte a de nombreuses méthodes que vous pouvez utiliser, comme celle
set()
que vous avez déjà utilisée pour attribuer les valeurs clés ...L'un d'eux est celui
keys()
qui retourne toutes les clés ...Dans votre cas, il renverra:
et vous les convertissez facilement en tableau en utilisant des méthodes ES6 , comme l'opérateur de propagation ...
la source