返回字符串中的第一个单词(javascript)

时间:2017-08-25 11:15:48

标签: javascript indexof charat

我一直在无限循环,并且不明白为什么我的代码无法运行并且不断崩溃浏览器。

<!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>

1 个答案:

答案 0 :(得分:1)

没有办法摆脱while循环。它会一直持续地找到字符串中的第一个空格,因为letter = word.indexOf(" ")只能找到第一个空格。您应该记住在循环(indexOf)中调用while ((letter = word.indexOf(" ", letter)) !== -1)而不是使用第二个调用所获得的值,因此它会从您停止的位置开始,然后通过字符串进行操作。如果没有提供letter,您也应该默认letter = letter || 0;;此功能的开头为letter;如果0有任何<{1}},则split设置为firstLetter em> falsy * value)。

或者,您可以使用false然后获取每个条目的第一个字母。

请注意,我没有提供明确的代码,因为我认为这是一项学习练习。

另外,您可能希望在循环中添加true

*&#34; falsy&#34; - JavaScript有&#34; falsy&#34;值(当用作布尔值时强制为undefined的值)和&#34; truthy&#34;值(用作布尔值时强制为""的值)。虚假值为0NaNnullfalseundefined,当然还有cum_f <- function(x, x0, k){ i <- 1 p <- function(x,x0) x0^2 while(i <= k){ p = function(x,x0){ p(x,x0) + (x - x0)**i } i = i + 1 } return(p(x,x0)) } cum_f(x,1,5) cum_f(10,1,5) 。所有其他人都是真实的。如果在调用函数时没有为参数提供参数,则参数将获得值{{1}}。