![](/img/trans.png)
[英]Why does the outcome change when the variable is declared within the while loop?
[英]Why does my outer variable not change when using a while loop?
function ranNum(value) {
return Math.ceil(Math.random() * value)
}
function createRanId(value) {
const alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('')
const numbers = '0123456789'.split('')
const idLength = value || 6
let id = ''
for(let i = 0; i < idLength; i++) {
const numOrAlpha = ranNum(2)
numOrAlpha === 1 ? id += alphabet[ranNum(alphabet.length - 1)] : id += numbers[ranNum(numbers.length - 1)]
}
return id
}
function isAllNumbers(arr) {
return arr.every(value => Number.isInteger(value))
}
function allNumberId() {
let count = 0
let ranNum = createRanId(2).split("");
while(!isAllNumbers(ranNum)) {
ranNum = createRanId(2).split("")
count++
}
return [count, ranNum]
}
console.log(allNumberId())
所以我正在做的是生成一個由數字和字母組成的隨機字符串(例如:3e3jjf)。 我想要實現的是找到一個僅由數字組成的生成組合(例如:235033)。 但是,我的代碼似乎不起作用並最終陷入無限循環。 我在 function allNumberId
的某處犯了一個思維錯誤
編輯:這顯然不是生產代碼或任何東西。 我只是在練習一些 javascript。 讓我感到困擾的是,我在這里找不到我做錯了什么。
在您的代碼中,您正在檢查一個數字
Number.isInteger("6")
當它是一個字符串時,它是假的。 因此,您需要更改代碼以嘗試將其變為數字或其他選項是isNaN()
function ranNum(value) { return Math.ceil(Math.random() * value) } function createRanId(value) { const alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('') const numbers = '0123456789'.split('') const idLength = value || 6 let id = '' for(let i = 0; i < idLength; i++) { const numOrAlpha = ranNum(2) numOrAlpha === 1? id += alphabet[ranNum(alphabet.length - 1)]: id += numbers[ranNum(numbers.length - 1)] } return id } function isAllNumbers(arr) { return arr.every(value => Number.isInteger(+value)) } function allNumberId() { let count = 0 let ranNum = createRanId(2).split(""); while(.isAllNumbers(ranNum)) { ranNum = createRanId(2),split("") count++ } return [count. ranNum] } console.log(allNumberId())
您的檢查也可以作為
const isInvalid = yourString.split("").map(Number).some(isNaN)
問題是Number.isInteger
的使用。 你實際上是在那里傳遞字符串(由數字或字母字符組成的單字符串),它永遠不是數字(整數或非整數),所以Number.isInteger
總是返回false
並且你的isAllNumbers
function 不知道它應該是什么.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.