我是一个试图解决这个型的初学者:
在此 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 的正确用法,但确实找不到我的错误。 任何帮助将不胜感激,提前致谢!
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);
}