Map-iterator-remove-1.js (917B)
1 // A map iterator can cope with removing the current entry. 2 3 function test(pairs) { 4 print(JSON.stringify(pairs)); 5 var map = new Map(pairs); 6 7 var all_keys = ''; 8 var false_keys = ''; 9 for (let [k, v] of map) { 10 all_keys += k; 11 if (!v) 12 false_keys += k; 13 } 14 15 var log = ''; 16 for (let [k, remove] of map) { 17 log += k; 18 if (remove) 19 map.delete(k); 20 } 21 assertEq(log, all_keys); 22 23 var remaining_keys = [...map].map(([k]) => k).join(''); 24 assertEq(remaining_keys, false_keys); 25 } 26 27 // removing the only entry 28 test([['a', true]]); 29 30 // removing the first entry 31 test([['a', true], ['b', false], ['c', false]]); 32 33 // removing a middle entry 34 test([['a', false], ['b', true], ['c', false]]); 35 36 // removing the last entry 37 test([['a', false], ['b', false], ['c', true]]); 38 39 // removing all entries 40 test([['a', true], ['b', true], ['c', true]]);