![](/img/trans.png)
[英]Why isn't my JS code working? I'm trying to get this code to generate a random password
[英]I'm trying to raise numbers to their consecutive powers and my code isn't working
https://codepen.io/aholston/pen/ZJbrjd
codepen链接已注释了代码以及HTML中的实际说明
否则......我最终要做的是编写一个函数,该函数接受两个参数(a和b),并接受这两个参数之间的所有数字(ab),然后将可以加到连续fower上的每个数字放入等于那个数字到一个新的数组。 例如: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;
}
尝试这个:
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));
好的,调试之后,这就是我学到的东西。
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(),我从来没有得到正确的答案,因为我的答案总是与之前的total值相加。 为了解决这个问题,我添加了var total = 0; 在我决定是否将“ togNumber”推入“ finalNum”之后。 所以我的代码看起来像这样。
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.