我被任务的最后一部分卡住了很长一段时间。我试着用模数遍历字母表。增量是您必须向前或向后移动才能获得真正字母的字母数。因此,如果给定chars.charAt(chars.getIndexOf(data.charAt(i))) (“H”,-2),函数将返回F。但是,如果getchars等于小于0的数字,就会出现问题。我希望能够给我的函数("A",-1)或任何负数,并让它返回"Z“。
这是一个类的赋值,所以如果可能,请将它保持为模数。我已经在这最后的部分工作了2个小时了。
function getChars(data,delta)
{
var chars;
var i;
var foundAt;
var newString;
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
data = data.toUpperCase();
delta = Math.min(chars.length, delta);
i = 0;
newString = "";
while (i < data.length)
{
if(delta <= 0)
{
foundAt = (chars.indexOf(data.charAt(i)) + delta) ;window.alert(foundAt)
//newString = newString + chars.charAt(foundAt);
//i = i + 1;
}
else if((chars.indexOf(data.charAt(i)) < 0))
{
foundAt = data.charAt(i);
newString = newString + foundAt;
i = i + 1;
}
else
{
foundAt = ((chars.indexOf(data.charAt(0 + i)) + delta)) % chars.length;window.alert(foundAt);
newString = newString + chars.charAt(foundAt);window.alert(newString);
i = i + 1;
}
}
//return newString;
}发布于 2015-04-08 16:00:46
为了灵活起见,您可以先使用i = chars.length - 1;,然后再使用found at。
发布于 2015-04-08 16:07:03
你必须使用你自己的modulus function:
function modulus(n,m) {
return ((n%m)+m)%m;
};使用以下代码:
function getChars(data,delta)
{
var chars;
var i;
var foundAt;
var newString;
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
data = data.toUpperCase();
i = 0;
newString = "";
while (i < data.length)
{
newString += chars.charAt(modulus(chars.indexOf(data[i])+delta,26))
i++;
}
return newString;
}https://stackoverflow.com/questions/29508950
复制相似问题