每日codewars题之判断一个数是否是水仙花数

645 阅读1分钟

题目

一个水仙花数是一个数字这是它自己的数字的总和,在每一个给定的基地升高到的位数的功率。在这个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方法进行过求和,最后判断是否等于传入的数字

总结

题目地址: Does my number look big in this?