// Removing a Map entry already visited by an iterator does not cause any | |
// entries to be skipped. | |
var map = new Map(); | |
for (var i = 0; i < 20; i++) | |
map.set(String.fromCharCode('A'.charCodeAt(0) + i), i); | |
var log = ''; | |
for (var [k, v] of map) { | |
log += k; | |
if (v % 5 === 4) { | |
// Delete all entries preceding this one. | |
for (let [k1, v1] of map) { | |
if (k1 === k) | |
break; | |
map.delete(k1); | |
} | |
} | |
} | |
assertEq(log, 'ABCDEFGHIJKLMNOPQRST'); | |
assertEq(map.size, 1); // Only the last entry remains. | |
assertEq(map.get('T'), 19); |