![](/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.