https://codepen.io/aholston/pen/ZJbrjd
codepen链接注释了代码以及HTML中的实际指令
否则....我最终要做的是编写一个函数,它接受两个参数(a和b)并获取这两个参数之间的所有数字(ab)并将每个数字添加到连续的fowers并将该数字等于一个新数组。例:89 = 8 ^ 1 + 9 ^ 2 = 89或135 = 1 ^ 1 + 3 ^ 2 + 5 ^ 3 = 135
function sumDigPow(a, b) {
// Your code here
var numbers = [];
var checkNum = [];
var finalNum = [];
var total = 0;
for (var i = 1; i <= b; i++) {
if (i >= a && i <= b) {
numbers.push(i);
}
}
for (var x = 0; x < numbers.length; x++) {
var checkNum = numbers[x].toString().split('');
if (checkNum.length == 1) {
var together = parseInt(checkNum);
finalNum.push(together);
} else if (checkNum.length > 1) {
var together = checkNum.join('');
var togNumber = parseInt(together);
for (var y = checkNum.length; y > 0; y--) {
total += Math.pow(checkNum[y - 1], y);
}
if (total == togNumber) {
finalNum.push(togNumber);
}
}
}
return finalNum;
}
答案 0 :(得分:0)
试试这个:
function listnum(a, b) {
var finalNum = [];
for (var i = a; i <= b; i++) {
var x = i;
var y = i;
var tot = 0;
j = i.toString().length;
while (y) {
tot += Math.pow((y%10), j--);
y = Math.floor(y/10);
}
if (tot == x)
finalNum.push(i);
}
return finalNum;
}
console.log(listnum(1, 200));
答案 1 :(得分:0)
好的,调试后这就是我学到的。
for (var y = checkNum.length; y > 0; y--) {
total += Math.pow(checkNum[y - 1], y);
}
if (total == togNumber) {
finalNum.push(togNumber);
}
}
}
return finalNum;
}
每次这个循环发生时,我都忽略了重置“总数”。变量回到0.所以我从来没有得到我的Math.pow()的正确答案,因为我的答案总是添加到以前的总值。为了解决这个问题,我添加了var total = 0;在我决定是否推动&#39; togNumber&#39;进入&#39; finalNum。&#39;所以我的代码看起来像这样..
for (var y = checkNum.length; y > 0; y--) {
total += Math.pow(checkNum[y - 1], y);
}
if (total == togNumber) {
finalNum.push(togNumber);}
}
var total = 0;
}
return finalNum;
}