我正在尝试完成一个代码战练习,在该练习中,您只需根据字符串中的数字顺序返回一个字符串即可。
例:
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'
匹配,然后将results
的wordsArr[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/