.filter(function (el, i) {
return arr[i] === el[i];
})
Элементы массива - числа. Как думаете, бывает ли у чисел свойство
0
? Или
5
? А зачем тогда
[i]
? Может, должно было быть
arr[i] === el
?
UPD. Я так понял, стоит задача найти натуральные числа, которые равны сумме собственных цифр, возведённых в степень.
Фильтрация не нужна:
const arr = Array.from({ length: hMax }, (_, i) => i + 1);
const result = arr.reduce((acc, number) => (
Array.prototype.reduce.call(
`${number}`,
(diff, digit) => diff - digit ** exp,
number
) || acc.push(number),
acc
), []);
Вообще, никакие методы массивов не нужны:
const result = [];
for (let i = 1; i <= hMax; i++) {
let sum = 0;
for (let j = i; j; j = Math.floor(j / 10)) {
sum += (j % 10) ** exp;
}
if (i === sum) {
result[result.length] = i;
}
}