Если вы удаляете элементы массива в цикле forEach, вы можете пропустить некоторые элементы, например:
let arr = [['One', 1], ['Two', 2], ['Three', 3], ['Four', 4]]
arr.forEach((i, ix) => i[1] <= 3 && arr.splice(ix,1)); // Two is not deleted
console.log(arr)
Но если вы применяете forEach к объекту Map, он работает:
let map = new Map( [['One', 1], ['Two', 2], ['Three', 3], ['Four', 4]] );
map.forEach( (value,key) => value <= 3 && map.delete(key));
console.log([...map.entries()])
Какие внутренние элементы в Map.forEach обеспечивают надежное удаление и другие операции (вставки?)
(Это возникло в вопросе, связанном с )