题目
一个水仙花数是一个数字这是它自己的数字的总和,在每一个给定的基地升高到的位数的功率。在这个Kata中,我们将自己限制为十进制(基数为10)。
例如,取153(3位数):
1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
和1634(4位数):
1^4 + 6^4 + 3^4 + 4^4 = 1 + 1296 + 81 + 256 = 1634
挑战:
您的代码必须返回true或false具体取决于给定数字是否为基数10中的Narcissistic数字。
不需要检查文本字符串或其他无效输入的错误,只有有效的整数将传递给函数。
解题方法及思路
使用Math.pow方法对数字的每一位进行幂运算,然后判断每一位幂运算之后的和是否等于传入的数字
const narcissistic = value => {
let arr = [...value.toString()] // 注解1
return arr.reduce((pre, cur) => pre += Math.pow(parseInt(cur), arr.length), 0) === value // 注解2
}
-
注解1: 把数字转成字符串(调用
Number.toString()方法),然后使用扩展运算符将其按每位分割成一个数组 -
使用
reduce方法进行过求和,最后判断是否等于传入的数字