试图理解这个功能加密(消息)

时间:2015-09-11 20:20:36

标签: javascript encryption

这是一个将给定句子加密为国际摩尔斯电码的函数,输入和输出都是字符串。 字符由单个空格分隔。单词由三重空格分隔。 例如," HELLO WORLD"应该返回 - > " .... .- .. ..- .. --- .-- --- .-。 .- .. - .."

提供了一个名为CHAR_TO_MORSE的预加载对象/字典/散列,以帮助将字符转换为摩尔斯电码。

但是,我不明白为什么我们需要在函数中使用内部循环?

    function encryption(message) {
              var arr = message.split(" ");   //I understand here we split the string into individual words
              for(var i = 0; i < arr.length; i++) {     
               arr[i] = arr[i].split("");   //then we use the loop to split the words further into characters?
               for(var j = 0; j < arr[i].length; j++) {  //but we need an inner loop here? what is the purpose of this j loop? is that necessary ? 
                  arr[i][j] = CHAR_TO_MORSE[arr[i][j]]; //can’t we just use arr[i] CHAR_TO_MORSE[arr[i]]...I think I totally lost the logic here...
                }
               arr[i] = arr[i].join(" "); 
              }
              arr = arr.join("   ");


              return arr;
}

另外,如果此解决方案不是最佳解决方案,请建议更好的解决方案。

1 个答案:

答案 0 :(得分:3)

你有一个句子。你把它变成了一个单词阵列。您将每个单词组成一个字符数组。现在你有了一组字符数组。

两个循环很好。你循环遍历每个单词,在内部循环遍历每个单词。

你仍然只会“击中”每个角色一次,所以没有“重复”。

还有其他方法可以解决这个问题,你可以只使用原始循环遍历原文中的每个字符而不使用分割。我不确定制作这些阵列有什么大的优势 - 但它并非“错误”。