我正在尝试完成一个代码战练习,在该练习中,您只需根据字符串中的数字顺序返回一个字符串即可。
例:

order("is2 Thi1s T4est 3a") // should return "Thi1s is2 3a T4est"
order("4of Fo1r pe6ople g3ood th5e the2") // should return "Fo1r the2 g3ood 4of th5e pe6ople")
到目前为止,这是我的尝试:
function order(words) {
  let wordsArr = words.split(' ')
  let result = [];
  for (let i = 0; i < wordsArr.length; i++) {
    for (let j = 0; j < wordsArr[i].length; j++) {
      if (typeof wordsArr[i][j] === 'number') {
        result[wordsArr[i][j]] = wordsArr[i]
      }
    }
  }
  return result
}
但是,这只会返回一个空数组。我的逻辑是,我遍历wordsArr中每个单词的每个字母,一旦typeof字母与'number'匹配,然后将resultswordsArr[i][j]数组索引设置为wordsArr[i]。尽管这种方式无法达到我期望的方式,但我对为什么感到困惑!

最佳答案

wordsArr[i][j]是一个字符,无论它是否为数字,因此您都需要检查它是否为数字,这可以通过与/\d/进行正则表达式匹配来实现。如果是数字,则将单词添加到结果中:

function order(words) {
  let wordsArr = words.split(' ')
  let result = [];
  for (let i = 0; i < wordsArr.length; i++) {
    for (let j = 0; j < wordsArr[i].length; j++) {
      if (wordsArr[i][j].match(/\d/)) {
        result[wordsArr[i][j]] = wordsArr[i]
      }
    }
  }
  return result.join(' ')
}

console.log(order("is2 Thi1s T4est 3a")) // should return "Thi1s is2 3a T4est"
console.log(order("4of Fo1r pe6ople g3ood th5e the2")) // should return "Fo1r the2 g3ood 4of th5e pe6ople")

关于javascript - 无法使数组正确显示嵌套的for循环的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62565980/

10-10 19:50