Вывести на экран элементы, значение которых совпадает с их порядковым номером в массиве
Сейчас изучаю 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 шт):
Если принять начало порядкового номера за 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]);
}
}
let arr = [1, 2, 2, 4, 4];
arr.forEach((el, index) => {
if (el == index) console.log(el)
});
Для расширения кругозора, без методов и коротко:
let arr = [0, 1, 2, 6, 4];
for(let i = 0; i < arr.length; i++) arr[i] !== i || console.log(i);
arr.filter((element, index) => element === index)
(4) [0, 1, 2, 4]