For循环正在跳过多维数组的一个索引

时间:2015-01-13 08:07:50

标签: javascript for-loop multidimensional-array

我做了以下函数,根据指令将给定的字符串转换为代码。

现在我面临的问题是,当我通过传递字符串sanmveg来运行此函数时,它很好地转换它,但在上面的字符串中跳过alphabat是v
我的功能看起来像这样:

   function coder(str){
        str = str.replace(/[ ]+/g,'');
        str = str.split('');// now str is an Array
        var code ='';

        for(var i=0;i<str.length;i++){ // now suppose i here is A
        console.log(str[i])
            for(var j=0; j<hr.length;j++){
                for(var k=0;k<hr[j].length;k++){
                    if(hr[j][k] === str[i]){
                        code = code+'#'+String(j)+'@'+String(k)+'~';
                    }// end of if statement
                }// end of k loop
            }// end of j loop
        }// end of i loop

        return code;
    };// end of coder function

此处hr表示horizontal rows,是一个多维度的结果:

var hr = [['A','B','C','D','E','F','G','H','I','J'],
          ['a','b','c','d','e','f','g','h','i','j'],
          ['K','L','M','N','O','P','Q','R','S','T'],
          ['k','l','m','n','o','p','q','r','s','t'],
          ['U','V','W','X','Y','Z','0','1','2','3'],
          ['4','5','6','7','8','9','!','@','#','$'],
          ['%','^','&','*','(',')','-','=','_','+'],
          ['[',']','{','}',':',';',',','/','.','<'],
          ['>','?',' ']];

问题

coder(sanmveg) //#3@8~#1@0~#3@3~#3@2~#1@4~#1@6~

但实际应该是#3@8~#1@0~#3@3~#3@2~#5@1~#1@4~#1@6~ 所以这显然意味着嵌套的for循环正在跳过一个索引

如何解决这个问题
如果可能,请解释 每一个小小的帮助都会很有意义

2 个答案:

答案 0 :(得分:2)

实际上,您的数组中缺少v(以及uwxyz),所以它显然不可能在阵列中找到它。

答案 1 :(得分:1)

'u', 'v', 'w', 'x', 'y', 'z'数组中不存在

hr。因此if(hr[j][k] === str[i])对于这些角色永远不会成立。它不是跳过一个索引,而是跳过这六个字母。