【问题标题】:Return first letters of words in a string (javascript)返回字符串中单词的首字母(javascript)
【发布时间】:2017-08-25 11:15:48
【问题描述】:

我不断陷入无限循环,不明白为什么我的代码无法运行并不断使浏览器崩溃。

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

【问题讨论】:

  • 不幸的是,没有多少代码有意义。除了在接受两个参数时只用一个参数调用函数之外,您永远不会更改firstLetter,尝试获取索引的索引,并且该函数似乎被设置为无论如何只返回一个字符。
  • 使用与方法同名的变量也不是一个好主意。

标签: javascript indexof charat


【解决方案1】:

您无法摆脱while 循环。它不断地、永远地寻找字符串中的第一个空格,因为letter = word.indexOf(" ") 只会找到第一个空格。你应该记住你在循环中调用indexOf (while ((letter = word.indexOf(" ", letter)) !== -1)) 得到的值,而不是使用第二个调用,所以它会从你离开的地方开始,然后你就可以遍历字符串。您还应该在未提供 letter 时默认它(开头的 letter = letter || 0; 将用于此功能;如果它有任何 falsy* 值,则将 letter 设置为 0)。

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

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


另外,您可能想在循环中添加到firstLetter


* “falsy” - JavaScript 具有“falsy”值(当用作布尔值时强制转换为 false 的值)和“truthy”值(当用作布尔值时强制转换为 true 的值)。虚假值为undefined""0NaNnull,当然还有false。其他都是实话。如果在调用函数时不为形参提供实参,则形参获取值undefined

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 2020-02-22
    • 2016-12-23
    • 2019-08-14
    • 2011-09-15
    • 2014-06-19
    相关资源
    最近更新 更多