2017-12-24 108 views
5

gdy próbuję te kod:Q: map.keys ES6() po map.delete (key)

const map=new Map([['a', 1],['b', 2],['c', 3],['d', 4],['e', 5]]); 
console.log(map.keys()); 
map.delete('a') 
console.log(map.keys()); 

konsola chrom pokaże te:

MapIterator {"a", "b", "c", "d", "e"} 
MapIterator {"c", "d", "e"} 

"b", dlaczego nie pojawia się?

+0

wygląda jak bug do mnie. Co ciekawe, jeśli faktycznie używasz iteratora, nie ma problemu console.log ([... map.keys()]); – laurent

+0

Wygląda mi na błąd, dzieje się tylko podczas usuwania pierwszego klucza. Również 'console.log (map)' wypisze poprawny wynik po skasowaniu –

+0

Tak, najprawdopodobniej błąd działa przy usuwaniu innych obiektów z wyjątkiem pierwszego: – stack26

Odpowiedz

0

Jest to problem ze zgodnością przeglądarki, który występuje z map.keys(), map.values(), map.entries().

Problem występuje w chrome podczas usuwania pierwszego klucza, ale działa, gdy jest dobrze w safari.

Także te właściwości nawet nie pracować w Mozilla, po prostu zwraca pusty Mapa iterator