2016-03-26 42 views
0

我想写一个解码函数,其中的参数是一串字母(在这里是字母表)和一个数组数组。我想使用数组上的.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 ])); 

回答

3

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 ]));

2

可以映射code阵列在每个位置得到字符,然后加入吧:

function decoder(key, code) { 
    return code.map(function(c) { 
     return key.charAt(c); 
    }).join(''); 
} 

console.log(decoder("abcdefghijklmnopqrstuvwxyz", [1, 4, 0, 13, 18 ])); 
1

其他已经给出了一个更加可靠的解决方案,但是你可以使用你最初的想法来利用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 ]));