Set-iterator-remove-1.js (692B)
1 // A set iterator can cope with removing the current entry. 2 3 function test(letters, toRemove) { 4 var set = new Set(letters); 5 toRemove = new Set(toRemove); 6 7 var leftovers = [...set].filter(x => !toRemove.has(x)).join(""); 8 9 var log = ""; 10 for (let x of set) { 11 log += x; 12 if (toRemove.has(x)) 13 set.delete(x); 14 } 15 assertEq(log, letters); 16 17 var remaining = [...set].join(""); 18 assertEq(remaining, leftovers); 19 } 20 21 test('a', 'a'); // removing the only entry 22 test('abc', 'a'); // removing the first entry 23 test('abc', 'b'); // removing a middle entry 24 test('abc', 'c'); // removing the last entry 25 test('abc', 'abc') // removing all entries