Число Армстронга (также известное как нарциссическое число) – это число, равное сумме его собственных цифр, каждая из которых возведена в степень количества цифр в самом числе.
Например, 153 — это число Армстронга, поскольку оно состоит из трех цифр, а 1³ + 5³ + 3³ = 153.
Начнем с определения нашей функции:
Первое, что мы делаем; будет преобразовывать число в строку и разбивать его на массив цифр. (например: если это 153, это будет [1,5,3] )
function isArmstrongNumber(number) { const digits = number.toString().split(""); }
Теперь мы можем получить количество цифр.
const n = digits.length;
Затем мы вычислим сумму n-й степени каждой цифры.
const sum = digits.reduce((acc, digit) => { return acc + Math.pow(parseInt(digit), n); }, 0);
Мы используем метод reduce(), чтобы применить функцию к каждому элементу массива, чтобы уменьшить массив до одного значения.
Метод reduce()вызывается для массива цифр с начальным значением 0.
Функция обратного вызова принимает два аргумента: acc и цифру. В каждой итерации функция обратного вызова добавляет цифру к счету (аккумулятору) и возвращает новое значение аккумулятора. Конечным результатом является сумма всех чисел в массиве.
Для этого мы сначала преобразуем строку в целое число с помощью метода parseInt() и с помощью Math.pow(parseInt(digit), n )мы вычисляем энную степень цифры.
И последнее, нам нужно проверить, равна ли сумма исходному числу.
Если мы соберем все вместе, код будет выглядеть следующим образом: