Robię kodowanie i pytanie i nie widzę, gdzie idę źle. Jestem poproszony o wydrukowanie każdego numeru dla każdego odpowiedniego listu.

NA PRZYKŁAD. a = 1 b = 2

Również usunąć wszelkie specjalne znaki i przestrzenie.

Poniżej znajduje się mój kod, bardzo doceniany :)

 function alphabetPosition(str) {
   str.split('');
   var emptyArr = [];
   var letters = /^[A-Za-z]+$/;
   for(i=0; i <= str.length; i++){
    if(str[i].match(letters)){
     var num = str[i].charCodeAt(0) - 96
     emptyArr.push(num)
     var arrStr = emptyArr.toString();

     return arrStr


     }else{
      console.log('didnt match');
     }

   }
}

alphabetPosition('sunset')

Więc cześć mężczyzna powinien wydrukować "19 21 14 19 5 20"

1
James H 4 czerwiec 2018, 20:29

4 odpowiedzi

Najlepsza odpowiedź

Twój kod musi zwrócić wartość po pętli.

 function alphabetPosition(str) {
   str = str.split('');
   var emptyArr = [];
   var letters = /^[A-Za-z]+$/;
   for(i=0; i < str.length; i++){
    if(str[i].match(letters)){
     var num = str[i].charCodeAt(0) - 96
     emptyArr.push(num)
     }else{
      console.log('didnt match');
     }
   }
   return emptyArr.toString()
}
console.log(alphabetPosition('sunset'))

Również inny sposób na to:

alphabetPosition=t=>t.match(/[a-z]/gi).map(i=>parseInt(i,36)-9).join(" ")
console.log(alphabetPosition('sunset'))
2
Luis felipe De jesus Munoz 4 czerwiec 2018, 17:37

Twój powrót jest za wcześnie. Przenieś go (i toString() połączenie) poza pętlą i kod powinien działać.

0
itdoesntwork 4 czerwiec 2018, 17:31

Możesz użyć parseInt Dla znaku z radixem 36 i użyj przesunięcia -9, aby uzyskać wartości.

function alphabetPosition(string) {
    return Array
        .from(
            string,
            c => parseInt(c, 36) - 9
        )
        .join(' ');
}

console.log(alphabetPosition('sunset'))
0
Nina Scholz 4 czerwiec 2018, 17:42

Nie wracaj do pętli

function alphabetPosition(str) {
   str.split('');
   var res = [];
   var letters = /^[A-Za-z]+$/;

   for(i=0; i < str.length; i++){
    if(str[i].match(letters)){
     var num = str[i].charCodeAt(0) - 96
     res.push(num)

     }else{
      console.log('didnt match');
     }

   }
   return res.join(' ')
}
0
WilliamNHarvey 4 czerwiec 2018, 17:35