Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用模数循环_Javascript_Loops - Fatal编程技术网

Javascript 使用模数循环

Javascript 使用模数循环,javascript,loops,Javascript,Loops,我被困在作业的最后一部分已经很长时间了。我试着用模数循环字母表。delta是你必须向前或向后移动才能得到真实字母的字母数。因此,如果给定getchars(“H”,-2),函数应该返回F。但是,如果chars.charAt(chars.getIndexOf(data.charAt(i)))等于小于0的数字,则会出现问题。我希望能够给出我的函数(“A”、-1)或任何负数,并让它返回“Z” 这是一个课堂作业,所以如果可能的话,请把它保持在刚度。我已经做了两个小时了 function getChars(

我被困在作业的最后一部分已经很长时间了。我试着用模数循环字母表。delta是你必须向前或向后移动才能得到真实字母的字母数。因此,如果给定getchars(“H”,-2),函数应该返回F。但是,如果chars.charAt(chars.getIndexOf(data.charAt(i)))等于小于0的数字,则会出现问题。我希望能够给出我的函数(“A”、-1)或任何负数,并让它返回“Z”

这是一个课堂作业,所以如果可能的话,请把它保持在刚度。我已经做了两个小时了

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;
}
函数getChars(数据,增量) { var-chars; var i; var foundAt; var-newString; chars=“abcdefghijklmnopqrstuvxyz”; data=data.toUpperCase(); 增量=数学最小值(字符长度,增量); i=0; 新闻字符串=”; 而(i如果(delta要灵活,您可以使用
i=chars.length-1;
,然后首先使用
中的
,您必须使用自己的:

使用以下代码:

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;
}
函数getChars(数据,增量) { var-chars; var i; var foundAt; var-newString; chars=“abcdefghijklmnopqrstuvxyz”; data=data.toUpperCase(); i=0; 新闻字符串=”; 而(i
Simple if语句-你有26个字母。如果字母ID<0,字母ID=25。(25因为js有0个索引)为什么你需要一个while循环?你不能先算出字母的索引,然后加上delta,然后取模吗?你能解释一下这部分:模(chars.indexOf(data[i])+delta,26)
chars.indexOf(data[i])
返回
字符列表中
数据[i]
字符的索引。我们加上增量,然后用26计算模数,得到一个介于0和25之间的数字。很抱歉,我们还没有学习列表,所以我对它们不熟悉。是否只需传递chars.indexOf(数据(i))就可以了我这么问是因为我尝试了,但失败了。你哪里有问题?我解决了。非常感谢
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;
}