Cześć, spotkałem się z dosyć niezrozumiałą dla mnie sytuacją przy zwykłym zastosowaniu forEach() i splice() wewnątrz. Miało to na celu usunięciu wszystkich elementów z tablicy składającej się z 2 elementowych tablic, w których el[1] jest pustym znakiem. Tabela wejściowa:

history.forEach((el, idx) => {
if (el[1] === '')
history.splice(idx, 1)
})
console.table(history)
W rezultacie czego usunięto niektóre elementy, ale nie wszystkie, co na poniższej ilustracji widać.
Podejrzewałem na początku, że problemem może być usuwanie elementów tabeli podczas operacji na niej, ale nawet przy wykonaniu dodatkowej, referencyjnej tabeli wynik jest ten sam. Każdy element z tych elementów na pewno jest tym samym znakiem co do wartości '', bo to "wypluwała" poprzedzająca pętla. Dziwne również wydaje mi się, dlaczego w tym momencie, jak uruchomię forEach kilkukrotnie to usuwane są wartości, tak jakbym oczekiwał po pierwszym uruchomieniu?
for (let i = 0; i < history.length; i++)
history.forEach((el, idx) => {
if (el[1] === '')
history.splice(idx, 1)
})
console.table(history)
Pytam, bo chciałbym wiedzieć i zrozumieć na przyszłość, skąd taki rezultat. Z góry dziękuję za odpowiedź :)