Ich möchte über alle Werte einer Karte iterieren. Ich weiß, dass es möglich ist, iterate over all keys. Aber ist es möglich, direkt über die Werte zu iterieren?Javascript: Iterieren über Werte der Karte
Antwort
Es ist keine Karte. Es ist einfach ein Object
.
Bearbeiten:unter Code ist schlechter als OP's, wie Amit in den Kommentaren darauf hingewiesen.
Sie können "iterieren über die Werte" von tatsächlich Iterieren über die Tasten mit:
var value;
Object.keys(map).forEach(function(key) {
value = map[key];
console.log(value);
});
Ich hoffte, dass es einen eleganteren Weg geben würde. –
@Matthias es mag auf den ersten Blick nicht so aussehen, aber es macht absolut Sinn, wenn Sie einen wichtigen Punkt betrachten: Die Reihenfolge der Eigenschaften in einem Objekt wird nicht erzwungen. z.B. Wenn Sie '{a: 1, b: 2, c: 3}' und for loop sagen oder die 'Object.keys' durchlaufen, können Sie nicht wirklich 1, 2, 3, also eine direkte Schleife von Werte machen nicht so viel Sinn. Die 'for ... in' (und Object.keys) ist näher an einer Schleife, die nur sagt:" Solange noch Eigenschaften übrig sind, erhalten Sie eine andere Eigenschaft ". 'Schlüssel' gibt Ihnen einen Platz zum Erzwingen der Bestellung, z. 'Object.keys (myobj) .sort(). ForEach (x => console.log (x)' –
Ich sehe nicht, wie das ist besser als OP's 'für (var key in map) {map [key] } '. Es ist länger, weniger lesbar, es verschwendet Speicher, ist die Ausführung langsamer - gibt es überhaupt einen Grund dafür? – Amit
Im Sinne kehrt Ich glaube, Sie beabsichtigten, in ES5 oder ES2015, nein, nicht ohne Arbeit an Ihrer Seite.
In ES2016, wahrscheinlich mit object.values
.
Beachten Sie, dass Arrays in JavaScript effektiv eine Zuordnung von einer Ganzzahl zu einem Wert sind und die Werte in JavaScript-Arrays direkt aufgelistet werden können.
['foo', 'bar'].forEach(v => console.log(v)); // foo bar
Auch in ES2015, können Sie ein Objekt iterable, indem eine Funktion auf eine Eigenschaft mit dem Namen Symbol.iterator
machen:
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'
Auch pro andere Antworten gibt es auch andere Einbauten Diese bieten die gewünschte Funktionalität, wie Map
(aber nichtWeakMap
weil es nicht iterierbar ist) und Set
zum Beispiel (aber diese sind nicht in allen Browsern noch vorhanden).
Sie underscore.js and the each function verwenden:
_.each({key1: "value1", key2: "value2"}, function(value) {
console.log(value);
});
- 1. Iterieren über alle Schlüssel einer Karte
- 2. iterieren Karte in Freemarker
- 3. Iterieren über URLs und erhalten bestimmte Werte
- 4. Wie iterieren (Schlüssel, Werte) in Javascript?
- 5. Wie Karte mit Schnurrbart in Java iterieren
- 6. How to Iterate über Javascript Karte mit eckigen ng-repeat
- 7. Iterieren über Farben
- 8. Schleifen über eine Karte mit Bereich, nur einmal iterieren
- 9. Iterieren über Objekt coffeescript
- 10. iterieren über Fallklasse Datenelemente
- 11. Iterieren über GeoJSON
- 12. iterieren Werte von Datenrahmen
- 13. Inherited CSS Werte über Javascript
- 14. Iterieren über Spalten und Neuzuweisung Werte - Pandas/Python
- 15. Iterieren über einen Hash-Schlüssel/Werte in Puppet
- 16. JSF 1.2 - iterieren einer Karte, die Sammlungen
- 17. Excel VBA: Iterieren über Bereichsparameter und ändern Zelle Werte
- 18. Iterieren durch (? JSON) Karte in Python
- 19. Wie über JSON-Array iterieren
- 20. Gleichzeitigkeit iterieren über NSArray
- 21. Iterieren über Klasseneigenschaften
- 22. Iterieren über Array Literal
- 23. Wie über MultiKeyMap iterieren?
- 24. Iterieren über asyncio.coroutine
- 25. Python über Wörterbücher iterieren
- 26. `pyparsing`: Iterieren über` ParsedResults`
- 27. Powerquery iterieren über die Liste der Schritte
- 28. Iterieren über eine Sammlung (VBA)
- 29. Ruby - über geparste JSON iterieren
- 30. Iterieren über synchronisierte Sammlung
Die Frage ist so verbreitet, dass ich mich frage dass niemand es vorher gefragt hat. Aber ich kann keine Frage so auf stackoverflow finden. –
U iterate kvps. Nicht nur Schlüssel, Sie können innerhalb einer Iteration auf die Schlüsselwerte oder auf beide zugreifen. Karte [Schlüssel] wäre der Wert der Iteration –
@kcbeard - können Sie Ihren Anspruch (* U iterate kvps *) mit einigen Proofs/Spezifikation unterstützen? – Amit