Es ist nicht möglich, dies in node.js zu tun, da die aktuelle Version von v8 keine Iteration implementiert hat, wie in dieser bug report angegeben.
Wir können das bestätigen, indem auf den Quellcode von v8 sucht collection.js:
InstallFunctions($Map.prototype, DONT_ENUM, $Array(
"get", MapGet,
"set", MapSet,
"has", MapHas,
"delete", MapDelete,
"clear", MapClear
));
Aber, wie in ECMAScript 6 wiki zu sehen ist, sollte es auch items()
, keys()
und values()
sein. v8 hat diese Methoden wahrscheinlich noch nicht implementiert, da Generatoren nicht unterstützt wurden. Aber jetzt it does seit Mai dieses Jahres. Es sollte nur eine Frage der Zeit sein, bis dies umgesetzt wird.
Wenn Sie diese Funktionalität jetzt benötigen, können Sie map-set-for-each verwenden, die Polyfills forEach
. Sie müssen es ändern, um case 'symbol':
nach case 'object':
hinzuzufügen.
a.forEach(function(value, key) {
if (value === 'Noise') {
console.log('Give mak the bounty');
}
});
Wenn v8 Iteration von Map
implementiert werden Sie in der Lage sein Noise
wie folgt zu finden:
for (let [key, value] of a) {
if (value === 'Noise') {
console.log('Upvotes for future');
}
}
ich weiß nicht, über ein Leck, aber man kann nicht zurück auf den Wert ohne eine bekommen ref auf das Symbol() return ... – dandavis
Ich habe keine Ahnung, wie ES 6 Symbole funktionieren, aber können Sie das Objekt nicht aufzählen? 'für (var key in a) Warnung (a [Schlüssel]);' – jods