繁体   English   中英

Javascript 算法试图实现回调 Function

[英]Javascript Algorithm Attempting to Implement Call Back Function

问题

自恋数字是一个数字,它是它自己的数字的总和,每个数字都提高到给定基数的数字的幂。 在这个 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

挑战:

您的代码必须返回真或假,具体取决于给定的数字是否是以 10 为基数的自恋数字。

不需要对文本字符串或其他无效输入进行错误检查,仅将有效整数传递到 function。

我的代码

 function narcissistic(value) { let valString = value.toString().split(''); let integerSet = valString.map((item)=>{ return Number(item); }) let keyFunc = function powerCalc(test){ let a = test[test.length-1]; return test.map((item)=>{ return Math.pow(item, a); }).reduce((total, item)=>{ return total + item; }, 0); } console.log(keyFunc(153)); if(keyFunc(integerSet)==value){ return true; } else { return false; } } console.log(narcissistic(12432)); console.log(narcissistic(153));

问题

我的控制台说 test.map 不是 function。

如何调整 function 以使其工作?

两个小错误:

 function narcissistic(value) { let valString = value.toString().split(''); let integerSet = valString.map((item)=>{ return Number(item); }) let keyFunc = function powerCalc(test){ let a = test.length; // <------- "raised to the power of the number of digits" return test.map((item)=>{ return Math.pow(item, a); }).reduce((total, item)=>{ return total + item; }, 0); } // console.log(keyFunc(153)); // <-- This was throwing an error if(keyFunc(integerSet)==value){ return true; } else { return false; } } console.log(narcissistic(12432));// false console.log(narcissistic(153)); // true console.log(narcissistic(371)); // true console.log(narcissistic(7)); // true

并进行一些重写:

 function narcissistic(value) { const integerSet = value.toString().split('').map(Number); const pow = integerSet.length; const sum = integerSet.reduce((total, item) => total + Math.pow(item, pow), 0); return sum == value; } console.log(narcissistic(12432));// false console.log(narcissistic(153)); // true console.log(narcissistic(371)); // true console.log(narcissistic(7)); // true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM