Map-iterator-remove-5.js (593B)
1 // Removing a Map entry already visited by an iterator does not cause any 2 // entries to be skipped. 3 4 var map = new Map(); 5 for (var i = 0; i < 20; i++) 6 map.set(String.fromCharCode('A'.charCodeAt(0) + i), i); 7 8 var log = ''; 9 for (var [k, v] of map) { 10 log += k; 11 if (v % 5 === 4) { 12 // Delete all entries preceding this one. 13 for (let [k1, v1] of map) { 14 if (k1 === k) 15 break; 16 map.delete(k1); 17 } 18 } 19 } 20 assertEq(log, 'ABCDEFGHIJKLMNOPQRST'); 21 assertEq(map.size, 1); // Only the last entry remains. 22 assertEq(map.get('T'), 19);