Return 字符串中单词的第一个字母 (javascript)
Return first letters of words in a string (javascript)
我不断遇到无限循环,不明白为什么我的代码无法正常工作并不断使浏览器崩溃。
<!DOCTYPE html>
<html>
<body>
<script>
function firstLetter(word, letter) {
var firstLetter = "";
while(word.indexOf(" ", letter) !== -1) {
letter = word.indexOf(" ") + 1;
console.log(word.charAt(letter));
}
return firstLetter;
}
console.log(firstLetter('Hi!, my name is Jessica.'));
</script>
</body>
</html>
没有办法摆脱你的 while
循环。它不断地、永远地寻找字符串中的第一个 space,因为 letter = word.indexOf(" ")
只会找到第一个 space。您应该记住在循环 (while ((letter = word.indexOf(" ", letter)) !== -1)
) 中调用 indexOf
而不是使用第二个调用获得的值,因此它会从您停止的地方开始,然后您可以继续处理字符串。您还应该在未提供 letter
时默认(letter = letter || 0;
开头将用于此功能;如果它有任何 ,则将 letter
设置为 0
虚假* 值)。
或者,您可以使用 split
然后取每个条目的第一个字母。
请注意,我没有提供明确的代码,因为我认为这是一个学习练习。
另外,您可能想在循环中添加 firstLetter
。
* "falsy" - JavaScript 具有 "falsy" 值(当用作布尔值时强制为 false
的值)和 "truthy" 值(强制为 false
的值用作布尔值时为 true
)。虚假值是 undefined
、""
、0
、NaN
、null
,当然还有 false
。其他都是真实的。如果您在调用函数时没有为参数提供实参,则参数将获得值 undefined
.
我不断遇到无限循环,不明白为什么我的代码无法正常工作并不断使浏览器崩溃。
<!DOCTYPE html>
<html>
<body>
<script>
function firstLetter(word, letter) {
var firstLetter = "";
while(word.indexOf(" ", letter) !== -1) {
letter = word.indexOf(" ") + 1;
console.log(word.charAt(letter));
}
return firstLetter;
}
console.log(firstLetter('Hi!, my name is Jessica.'));
</script>
</body>
</html>
没有办法摆脱你的 while
循环。它不断地、永远地寻找字符串中的第一个 space,因为 letter = word.indexOf(" ")
只会找到第一个 space。您应该记住在循环 (while ((letter = word.indexOf(" ", letter)) !== -1)
) 中调用 indexOf
而不是使用第二个调用获得的值,因此它会从您停止的地方开始,然后您可以继续处理字符串。您还应该在未提供 letter
时默认(letter = letter || 0;
开头将用于此功能;如果它有任何 ,则将 letter
设置为 0
虚假* 值)。
或者,您可以使用 split
然后取每个条目的第一个字母。
请注意,我没有提供明确的代码,因为我认为这是一个学习练习。
另外,您可能想在循环中添加 firstLetter
。
* "falsy" - JavaScript 具有 "falsy" 值(当用作布尔值时强制为 false
的值)和 "truthy" 值(强制为 false
的值用作布尔值时为 true
)。虚假值是 undefined
、""
、0
、NaN
、null
,当然还有 false
。其他都是真实的。如果您在调用函数时没有为参数提供实参,则参数将获得值 undefined
.