使用map函数对具有数字数组的字符串进行解码

Use map function to decode a string with an array of numbers

本文关键字:字符串 解码 数组 数字 函数 map 使用      更新时间:2023-09-26

我正在尝试编写一个解码函数,其中参数是一个字母串(在本例中是字母表)和一个数字数组。我想在数组上使用.map方法以字符串形式返回编码消息。这些数字是正整数。

给定传入的数组,函数应该返回字符串"beans"。

我搞不懂其中的逻辑。这是我所拥有的:

function decoder(key, code) {
  var arr = key.split('');
  var result = "";
  arr.map(function(item) {
    for(var i = 0; i <= code.length; i++) {  
      if(item[i] === code[i]) {
        result += item;
      }
    }
    return result;
  });
}
console.log(decoder("abcdefghijklmnopqrstuvwxyz", [1, 4, 0, 13, 18 ]));

与Array.prototype.reduce()完美匹配:

function decoder(arr, indices){
  return indices.reduce(function(previousValue, currentValue){
    return previousValue + arr[currentValue];
  }, "");
}
alert(decoder("abcdefghijklmnopqrstuvwxyz", [1, 4, 0, 13, 18 ]));

您可以映射code数组以获得每个位置的字符,然后加入它:

function decoder(key, code) {
    return code.map(function(c) {
        return key.charAt(c);
    }).join('');
}
console.log(decoder("abcdefghijklmnopqrstuvwxyz", [1, 4, 0, 13, 18 ]));

其他人已经给出了一个更坚实的解决方案,但您可以使用您最初使用for循环的想法。

function decoder(key, code) {
    var arr = key.split('');
    var result = "";
    for (var i = 0; i < code.length; i++) {
        result += arr[code[i]];
    }
    return result;
}
console.log(decoder("abcdefghijklmnopqrstuvwxyz", [1, 4, 0, 13, 18 ]));