Я пытаюсь написать функцию в Javascript, которая будет возвращать true
или false
в зависимости от того, является ли число числом Армстронга или нет. Числа Армстронга - это числа, которые берут каждую цифру числа и умножают ее на длину числа, а затем складывают их все до совпадения с исходным числом. Например: 153 - это число Армстронга, потому что: 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
.
Я уверен, что у моей функции есть другие проблемы и она не самая хорошая, но я застрял на этом.
Я уже пытался добавить parseInt()
вокруг нескольких областей функции, чтобы гарантировать, что я имею дело только с целыми числами, а не со строками без каких-либо везучих.
const validate = (num) => {
const numlength = num.toString().length;
let armstrong;
let singleDigit;
for (i = 0; i < numlength; i++) {
singleDigit = num.toString()[i] ** numlength;
armstrong += singleDigit;
}
if (armstrong == num) {
return true;
} else {
return false;
}
};
console.log(validate(153))
Проблема, с которой я сталкиваюсь, заключается в том, что переменная armstrong
по какой-то причине возвращает NaN
. Я не совсем уверен, как итеративно добавлять значения singleDigit
, найденные в операторе for. Когда я console.log(singleDigit)
сразу после того, как это выяснилось в операторе for, значение будет правильным. Если я console.log(armstrong)
сразу после этого, я получаю NaN