[英]function that checks if a number is narcisstic or not
我多次运行代码但找不到问题!
自恋数是一个正数,它是它自己的数字的总和,每个数字都提高到给定基数的数字的幂。 在这个 Kata 中,我们将自己限制为十进制(以 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
。 并且 type undefined
+ type 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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.