我多次运行代码,但找不到问题!!
一个自恋数是一个正数,它是它自己的数字的和,每个数字都是给定基数中位数的幂。在本例中,我们将限制为十进制(以10为基数)。
你的代码必须返回真或假(不是'真'和'假')取决于给定的数字是否是以10为基数的自恋数。
function narcissistic(value) {
let strDigits = value.toString();
let power = strDigits.length;
let arrayDigits = strDigits.split('');
let sum, poweredValue = 0;
for (let i = 0; i < power; i++){
poweredValue = Number(arrayDigits[i])**power;
sum += poweredValue;
}
if (sum === value){
return true;
}else {
return false;
}
};
必须将sum
的初始值指定为0
。默认设置为undefined
。在undefined
的基础上再加一些,得到NaN
,与NaN
比较,得到的总是false
。
function narcissistic(value) {
let strDigits = value.toString();
let power = strDigits.length;
let arrayDigits = strDigits.split("");
let sum = 0,
poweredValue = 0;
for (let i = 0; i < power; i++) {
poweredValue = Number(arrayDigits[i]) ** power;
sum += poweredValue;
}
if (sum === value) {
return true;
} else {
return false;
}
}
您假设语句的形式为:
let x, y =0;
将x
和y
初始化为0。但x仍然是undefined
。类型undefined
+类型number
将计算为NaN
(不是数字)。没有数字等于NaN
初始化:
function narcissistic(value) {
let strDigits = value.toString();
let power = strDigits.length;
let arrayDigits = strDigits.split('');
let sum =0, poweredValue = 0;
for (let i = 0; i < power; i++){
poweredValue = Number(arrayDigits[i])**power;
sum += poweredValue;
}
if (sum === value){
return true;
}else {
return false;
}
};
console.log(narcissistic(153));
是这样吗?
const n = 153
function action(n) {
let sum = 0;
n.toString().split('').forEach(i => {
sum += parseInt(i)**n.toString().length;
})
return sum == n
}
console.log(action(n))