Source code

Revision control

Copy as Markdown

Other Tools

// 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);