Filter, find... у тебя изначально объект, в котором выбор по ключу максимально быстрый, а ты его зачем-то преобразуешь в массив и на каждую букву полностью перебираешь.
Изначально должно было быть примерно так, тогда бы никаких проблем бы не возникло:
{
const alphabet = {
а : 'a', б : 'b', в : 'v', г : 'g', д : 'd', е : 'e', ё : 'e', ж : 'zh',
з : 'z', и : 'i', й : 'i', к : 'k', л : 'l', м : 'm', н : 'n', о : 'o',
п : 'p', р : 'r', с : 's', т : 't', у : 'u', ф : 'f', х: 'h', ц : 'c',
ч :'ch', ш : 'sh', щ : 'sh', ъ : '', ы : 'i', ь : '\'', э : 'e', ю : 'y',
я : 'ia'
};
let a = 'Привет красавчик';
function trans(x){
let arr = x.split('');
console.log(arr)
for(let i = 0; i < arr.length-1; i+=1){
if(arr[i] == ' '){
i++;
} else if(arr[i] in alphabet){
arr[i] = alphabet[arr[i]];
} else if(arr[i].toLowerCase() in alphabet){
arr[i] = alphabet[arr[i].toLowerCase()].toUpperCase();
}
}
return arr.join('')
};