Javascript 函数是返回数字而不是字母

Javascript 函数是返回数字而不是字母,javascript,Javascript,我正在尝试创建一个函数,该函数将返回字符串中每个单词的最后一个字母,并认为我很接近,但每当调用该函数时,我都会得到一系列数字,而不是我要查找的字母 代码如下: function lastLetter(str){ var arr = []; for(var i = 0; i < str.length; i++){ if(str[i] === " " || str[i] === "."){ arr.push((i) - 1);

我正在尝试创建一个函数,该函数将返回字符串中每个单词的最后一个字母,并认为我很接近,但每当调用该函数时,我都会得到一系列数字,而不是我要查找的字母

代码如下:

function lastLetter(str){
    var arr = [];
    for(var i = 0; i < str.length; i++){
        if(str[i] === " " || str[i] === "."){
            arr.push((i) - 1);
        }

    }
     return arr;
}
lastLetter("I love bacon and eggs.");
函数lastLetter(str){
var-arr=[];
对于(变量i=0;i

如有任何建议,将不胜感激。谢谢

将值
i-1
推送到数组上。你的意思是推送str.charAt(i-1)

请参阅:

请注意,您的代码并不是真正的防御性代码。如果字符串中的第一个字符处有空格或句点,则引用的是位置
-1
处的字符,该位置无效。您可以通过从
1
而不是
0
循环来解决此问题。在这种情况下,如果字符串以两个空格开头,结果中仍然会有一个空格,但至少不会出现错误。稍好一点的算法版本将测试
i-1
是否为有效索引,以及该位置是否存在不是空格或句点的字符

下面是一个可能的解决方案,我认为它解决了这些情况,同时在设置代码时仍然保留代码的结构

函数lastLetter(str){
var-arr=[];
对于(变量i=1;iconsole.log(最后一封信(“…你喜欢熏肉和鸡蛋吗…”)
将值
i-1
推送到数组上。你的意思是推送str.charAt(i-1):

请参阅:

请注意,您的代码并不是真正的防御性代码。如果字符串中的第一个字符处有空格或句点,则引用的是位置
-1
处的字符,该位置无效。您可以通过从
1
而不是
0
循环来解决此问题。在这种情况下,如果字符串以两个空格开头,结果中仍然会有一个空格,但至少不会出现错误。稍好一点的算法版本将测试
i-1
是否为有效索引,以及该位置是否存在不是空格或句点的字符

下面是一个可能的解决方案,我认为它解决了这些情况,同时在设置代码时仍然保留代码的结构

函数lastLetter(str){
var-arr=[];
对于(变量i=1;i尝试:

但是,这将出现多字节字符问题。

尝试:


但是,这对于多字节字符会有问题。

您正在推送整数值
i-1
而不是字符
str[i-1]
您正在推送整数值
i-1
而不是字符
str[i-1]
您正在将索引推送到数组中。您仍然需要访问字符串的i-1 `

函数lastLetter(str){ var-arr=[]; 对于(变量i=0;i
您正在将索引推入数组中。您仍然需要访问字符串的i-1 `

函数lastLetter(str){ var-arr=[]; 对于(变量i=0;i解决方案和改进版本如下:

使用
arr.push(str.charAt(i-1))
代替
arr.push(i-1)
(保存最后一个字母的位置,但不保存其值-
charAt(position)
会在给定位置为您提供后者

charAt()

演示:

函数lastLetter(str){
var-arr=[];
对于(变量i=0;idocument.body.innerHTML=lastLetter(“我喜欢熏肉和鸡蛋”);
解决方案和改进版本如下:

使用
arr.push(str.charAt(i-1))
代替
arr.push(i-1)
(保存最后一个字母的位置,但不保存其值-
charAt(position)
会在给定位置为您提供后者

charAt()

演示:

函数lastLetter(str){
var-arr=[];
对于(变量i=0;idocument.body.innerHTML=lastLetter(“我喜欢熏肉和鸡蛋”);
你在数组中推送数字
arr.push((I)-1);
,那么你会期待什么呢。如果字符串带有空格怎么办?重新考虑你的输入算法,比如
“foo”
“bar…”
。你在数组中推送数字
arr.push((I)-1)那么你期望什么呢?如果一个字符串带有空格怎么办?重新考虑你的输入算法,比如
“foo”
“bar…”
。哇,太快了!这真的很有帮助!我对编码很陌生,所以很高兴能这么快得到帮助。我真的很感激!哇,太快了!这真的很有帮助!我对编码很陌生,所以很高兴能这么快得到帮助
arr.push(str.charAt(i - 1));
arr.push(str[i - 1]);
` function lastLetter(str){
    var arr = [];
    for(var i = 0; i < str.length; i++){
        if(str[i] === " " || str[i] === "."){
            arr.push(str[(i) - 1]);
        }

    }
     return arr;
}
lastLetter("I love bacon and eggs.");