¡Ejecuté el código varias veces pero no pude encontrar el problema!
Un Número Narcisista es un número positivo que es la suma de sus propios dígitos, cada uno elevado a la potencia del número de dígitos en una base dada. En este Kata, nos limitaremos al decimal (base 10).
Su código debe devolver verdadero o falso (no 'verdadero' y 'falso') dependiendo de si el número dado es un número narcisista en base 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; } };Tienes que asignar el valor inicial para sum como 0 . De forma predeterminada, está establecido en undefined . Y agregar algo a undefined da NaN , y cualquier comparación con NaN siempre es 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; } }Usted asumió que la declaración de la forma:
let x, y =0; inicialice x e y ambos como 0. Pero x aún no está undefined . Y escriba undefined + type number se evaluará como NaN (no un número). Y ningún número es igual a NaN
Simplemente inicialice correctamente:
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));¿Algo como eso?
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))