【发布时间】:2018-04-06 03:49:29
【问题描述】:
我正在尝试用字母表中的下一个字母替换字符串中的所有字母。
例如:a --> b 或 i --> j。
我的程序忽略了根据字母数组检查字母的 if 语句。当我尝试运行代码时,它会将所有字母替换为字母数组中的最后一个元素“A”。
虽然效率低下,但我找不到此算法的任何错误。那么为什么程序会忽略 if 语句呢?
function LetterChanges(str){
var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","a"];
str = str.toLowerCase();
var ans = str.split("");
for(i = 0; i < ans.length; i ++)//Running through for each letter of the input string
{
for(a = 0; a < 26; a++)//Checking each letter against the alphabet array
{
if(alphabet[a] == ans[i])
{
ans[i] = alphabet[a+1];
}
}
}
return ans;
}
LetterChanges("Argument goes here");
【问题讨论】:
-
请声明局部变量,例如
a和i,否则最终你会遇到非常有趣的错误。 -
@Thomas 只是为了澄清,你是说我应该在我的 for 循环之前有
var a = 0和var i = 0吗? -
-
一个简单的
var a,i;在函数内部的某个地方(任何地方)就足够了,但是由于您只需要在循环中使用这个变量,我会得到for(var i=0; ...
标签: javascript algorithm comparison-operators