【问题标题】:For loop is skipping one index of a multi-dimensional array [closed]For循环正在跳过多维数组的一个索引[关闭]
【发布时间】:2015-01-13 08:07:50
【问题描述】:

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

现在我面临的问题是,当我通过传递字符串 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 循环正在跳过某个索引

如何解决这个问题
尽可能解释
每一点帮助都会很棒

【问题讨论】:

  • 拿调试器调试一下。

标签: javascript for-loop multidimensional-array


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    'u', 'v', 'w', 'x', 'y', 'z' 不存在于hr 数组中。所以if(hr[j][k] === str[i]) 对于这些角色永远不会成立。它不是跳过一个索引,而是跳过这六个字母。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 2015-10-15
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多