簡體   English   中英

為什么我的外部變量在使用 while 循環時不會改變?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM