【发布时间】:2020-10-09 19:01:38
【问题描述】:
问题
自恋数字是一个数字,它是它自己的数字的总和,每个数字都是给定基数的数字的幂。在这个 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 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 不是一个函数。
如何调整该功能以使其正常工作?
【问题讨论】:
-
test是powerCalc/keyFunc的参数。您正在记录keyFunc(153)和153显然不是一个数组 -> 删除console.log(keyFunc(153))或将153包装在一个数组中 -
赞赏 :) 我在测试时遇到这些错误,有什么想法吗?自恋函数应该发现小数字都是自恋的 7 是自恋的 - 预期:真,而不是:假 在 1 毫秒内完成应该发现这些数字是自恋的 371 是自恋的 - 预期:真,而不是:假
标签: javascript algorithm