Je veux parcourir toutes les valeurs d'une carte ..__ Je sais qu'il est possible de parcourir toutes les clés . Mais est-il possible de parcourir directement les valeurs?
var map = { key1 : 'value1', key2 : 'value2' }
for (var key in map) { ...} // iterates over keys
Ce n'est pas une carte. C'est simplement une Object
.
Edit: le code ci-dessous est pire que l'OP, comme Amit l'a souligné dans des commentaires.
Vous pouvez "parcourir les valeurs" en effectuant une itération sur les touches avec:
var value;
Object.keys(map).forEach(function(key) {
value = map[key];
console.log(value);
});
Dans le sens où je pense que vous aviez l'intention, dans ES5 ou ES2015, non, pas sans quelques travaux de votre part.
Dans ES2016, probablement avec object.values
.
Remarquez que les tableaux en JavaScript sont en réalité une carte d'un nombre entier à une valeur, et les valeurs des tableaux en JavaScript peuvent être énumérées directement.
['foo', 'bar'].forEach(v => console.log(v)); // foo bar
En outre, dans ES2015, vous pouvez rendre un objet itérable en plaçant une fonction sur une propriété portant le nom Symbol.iterator
:
var obj = {
foo: '1',
bar: '2',
bam: '3',
bat: '4',
};
obj[Symbol.iterator] = iter.bind(null, obj);
function* iter(o) {
var keys = Object.keys(o);
for (var i=0; i<keys.length; i++) {
yield o[keys[i]];
}
}
for(var v of obj) { console.log(v); } // '1', '2', '3', '4'
En outre, d’autres réponses contiennent d’autres fonctions intégrées fournissant les fonctionnalités souhaitées, telles que Map
(mais pas WeakMap
car elle n’est pas itérable) et Set
(par exemple, mais elles ne sont pas présentes dans tous les navigateurs) .
J'avais l'habitude d'itérer comme ça. Je ne sais pas si c'est un code optimisé ou non, mais cela fonctionne pour moi.
for (let [k, v] of myMap) {
console.log("Key: " + k);
console.log("Value: " + v);
}
J'espère que cela t'aides :)
Vous pouvez utiliser underscore.js et chaque fonction :
_.each({key1: "value1", key2: "value2"}, function(value) {
console.log(value);
});
Si vous voulez profondément itérer dans un objet complexe (imbriqué) pour chaque clé & valeur, vous pouvez le faire en utilisant Object.keys () :
const iterate = (obj) => {
Object.keys(obj).forEach(key => {
console.log(`key: ${key}, value: ${obj[key]}`)
if (typeof obj[key] === 'object') {
iterate(obj[key])
}
})
}