Continue 在 for 循环中没有作用?

问题描述 投票:0回答:1

我是一个试图解决这个型的初学者:

在此 kata 中,您需要根据给定的字符串替换每个字母 及其在字母表中的位置。

如果文本中的任何内容不是字母,请忽略它并且不要返回它。

“a”= 1,“b”= 2,等等

我的解决方案似乎一直有效,直到它在给定字符串中遇到空格,然后将它们作为位置数组的元素包含在内。我知道这可能可以通过过滤掉空格来修复,但我真的很想知道为什么我的代码不起作用。

function alphabetPosition(text) {
  const alphabet="abcdefghijklmnopqrstuvwxyz".split('');
  const letters = text.toLowerCase().split('');
  let positions =[];
  for (i=0; i<letters.length; i++){
    if (!(alphabet.includes(letters[i]))){
      continue;
      }
      positions[i]=(alphabet.indexOf(letters[i])+1);          
    }
  return (positions.join(' '));  
}

我认为通过使用 continue ,它应该只跳过字母数组中的空格,但 continue 关键字似乎没有任何效果。 我试图查找 continue 的正确用法,但确实找不到我的错误。 任何帮助将不胜感激,提前致谢!

javascript arrays for-loop continue
1个回答
0
投票

continue
命令确实跳过循环的执行,但循环计数器
i
仍然增加。当您将
positions
与索引一起使用时,使用
join
时可以看到由此产生的索引中的间隙。

push()
数组上使用
positions
来防止出现间隙。

for (i=0; i<letters.length; i++){
    if (!(alphabet.includes(letters[i]))){
        continue;
    }
    positions.push(alphabet.indexOf(letters[i])+1);          
}
© www.soinside.com 2019 - 2024. All rights reserved.