2016-03-26 9 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 ])); 
関連する問題