Вывести на экран элементы, значение которых совпадает с их порядковым номером в массиве

Сейчас изучаю JavaScript, еще совсем чайник, наткнулся на данную задачу:

Дан массив с числами. С помощью цикла выведите на экран все элементы, значение которых совпадает с их порядковым номером в массиве.

Вот моё решение:

let arr = [0, 1, 2, 6, 4];

for (let i = 0; i <= arr.length - 1; i++) {

    let arrEl = arr[i];
    let arrIndex = arr.indexOf(i);

    if (arrEl == arrIndex) {
        console.log(arr[i]);
    }
    
}

Но, если я изменю массив на [0, 1, 2, 4, 4], то в данном случае функция не вернет в консоль цифру 4 и так, с любой цифрой, [0, 1, 3, 3, 4] - в дааном случае не вернет цифру 3, хотя порядковый номер в массиве равен - 3.

Подскажите где я допустил ошибку или что не учел. Спасибо.


Ответы (4 шт):

Автор решения: 4500zenja

Если принять начало порядкового номера за 0, то тогда можно сильно упростить код, сравнивая очередной элемент массива с его индексом i:

let arr = [0, 1, 2, 6, 4];

for (let i = 0; i <= arr.length - 1; i++) {

  let arrEl = arr[i];

  if (arrEl === i) {
    console.log(arr[i]);
  }

}

→ Ссылка
Автор решения: yspesny

let arr = [1, 2, 2, 4, 4];

arr.forEach((el, index) => {
  if (el == index) console.log(el)
});

→ Ссылка
Автор решения: Laukhin Andrey

Для расширения кругозора, без методов и коротко:

let arr = [0, 1, 2, 6, 4];
for(let i = 0; i < arr.length; i++) arr[i] !== i || console.log(i);

→ Ссылка
Автор решения: Michael Chechin
arr.filter((element, index) => element === index)

(4) [0, 1, 2, 4]

→ Ссылка