Как насчет использования объекта для эффективного поиска значений:
const map = {"1": "i", "4" : "a", "3": "e", "7": "u", "0": "o"};
const numberLetters = (str) => {
var temp = '';
for(var x = 0; x < str.length; x++){
temp += map[str[x]] || str[x]; //if map look up for the number succeeds add it with the temp, else take the character.
}
return temp;
}
// Test cases
console.log(numberLetters('s3rg31dr4g7n0v')); // sergeidragunov
console.log(numberLetters('b4d41')); // badai
Во втором коде вы возвращает после того, как найдено первое совпадение или когда не найдено совпадение . Поэтому всегда первая буква / одна буква видна в консоли.
for(var x = 0; x < str.length; x++){
if (str[x] == 1) return temp += 'i'; //returned from here if the match is found, subsequent code block unreachable
if (str[x] == 4) return temp += 'a';
if (str[x] == 3) return temp += 'e';
if (str[x] == 7) return temp += 'u';
if (str[x] == 0) return temp += 'o';
return temp += str[x] //this will be ignored if the any of the previous statements are satisfied.
}
Итак, в вашем случае вы не можете использовать return
из блоков if
, так как вам нужно проверить все возможные случаи.
Несколько хороших примеров с основными функциями покрыты
Не говоря уже о:
My article on two advanced UIScrollView techniques (+ sample code): github.com/andreyvit/ScrollingMadness/: