題目
一個水仙花數是一個數字這是它自己的數字的總和,在每一個給定的基地升高到的位數的功率。在這個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
方法進行過求和,最後判斷是否等於傳入的數字