【发布时间】:2020-01-08 05:57:28
【问题描述】:
尝试编写一个函数,该函数接受一个字符串,并以大写每个单词的首字母返回该字符串。我能够这样做。但是我继续在迭代中的第一个索引值处获得未定义的值,尽管我的列表中有项目。
我写了我的函数,它接受一个字符串参数。我使用 split(" ") 方法将我的参数传递给拆分,这样我就可以获得一个单词数组。当我创建我的 forloop 来检查所有这些以便能够将它们的每个首字母大写时。现在在迭代中,我创建了一个变量来存储使用 toString() 方法转换为字符串的第一个索引元素,以便以后可以在其上应用 toUpperCase() 方法
当我在 for 循环中执行 console.log() 时,我可以看到所有转换后的元素都列出了(当我执行函数并将字符串传递给它时)
但我不明白为什么我得到:未捕获的类型错误:无法读取未定义的属性“toString”...当我将其转换为字符串时,此错误指向在索引 [i] 处保存元素的变量forloop: var pickString = newStringList[i].toString()
function capitalizeLertters (letter) {
var newStringList = letter.split(" ");
// console.log(newStringList[0])
var addAll = []
for (var i = 0; i <= newStringList.length; i++) {
console.log(newStringList[i])
var pickString = newStringList[i].toString()
// console.log(pickString)
var finalString = pickString.charAt(0).toUpperCase() + pickString.slice(1)
// console.log(finalString)
}
addAll.push(finalString)
// console.log(addAll)
return addAll
}
console.log(capitalizeLertters("js string exercises"))
这是我的预期结果: 《Js字符串练习》
这些是不同的 console.log 结果
""js JS 细绳 细绳 练习 练习""
但我的函数最终没有执行......它抛出了这个:
"""learnJs.js:100 Uncaught TypeError: Cannot read property 'toString' of undefined 在大写字母 (learnJs.js:100) 在 learnJs.js:110"""
【问题讨论】:
-
for循环条件应该是<而不是<=。此外,没有理由在已经是字符串的情况下调用.toString()。 -
另外,
.push()必须在循环内部,而不是外部。
标签: javascript