我做了以下函数,根据指令将给定的字符串转换为代码。
现在我面临的问题是,当我通过传递字符串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循环正在跳过一个索引
如何解决这个问题
如果可能,请解释
每一个小小的帮助都会很有意义
答案 0 :(得分:2)
实际上,您的数组中缺少v
(以及u
,w
,x
,y
和z
),所以它显然不可能在阵列中找到它。
答案 1 :(得分:1)
'u', 'v', 'w', 'x', 'y', 'z'
数组中不存在 hr
。因此if(hr[j][k] === str[i])
对于这些角色永远不会成立。它不是跳过一个索引,而是跳过这六个字母。