javascript - 试图理解这个函数加密(消息)

标签 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;
}

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

最佳答案

你有一句话。你把它变成一个单词数组。您将每个单词放入一个字符数组中。现在你有一个字符数组的数组。

两个循环就可以了。您循环遍历每个单词,并在内部循环遍历每个字符。

您仍然只“击中”每个 Angular 色一次,因此不会出现“重复”。

还有其他方法可以解决这个问题,您可以只循环原始文件中的每个字符,而根本不使用 split。我不确定制作这些数组是否有很大的优势——但这并不是“错误的”。

关于javascript - 试图理解这个函数加密(消息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32531533/

相关文章:

javascript - 在nodejs中获取最大调用堆栈大小超出错误

javascript - 使用 AJAX 提交表单不起作用。它忽略了ajax

c++ - 在 C++ 中存储变量

java - 使用 Amazon KMS 上传带有服务器端加密的 S3 对象时出错

swift - Vapor 的 crypto.json - 部署安全?

javascript - Angular Ionic - 检测 <ion-content> 是否滚动至最大底部

javascript - 如何在 Angular JS 中将我的表字符串解析为 html 表?

javascript - 如何在 angular-ui-grid 中为特定值的行着色?

java - 数据本地加解密

c++ - 解密导致 Rijndael 和 256 block 大小的乱码