Я застрял, выясняя, почему троичный оператор не будет возвращать отрицательный результат, и не могу понять, почему. Вот код:
function translatePigLatin(str) {
let reg=/[aeiou]/gi;
let firstVowel = str.indexOf(str.match(reg)[0]);
//console.log(firstVowel);
return str.match(reg) == 1 ? play(str) : str + "ay";
function play(str) {
if(str[0].match(reg)){
return str+"way";
}else if(str[1].match(reg)){
return str.slice(1) + str[0]+ "ay"
} else if(str.match(reg)!==null){
return str.slice(firstVowel) +str.slice(0,firstVowel)+"ay";
} else {
return str+"ay";
}
}
}
console.log(translatePigLatin("consonant"));
console.log(translatePigLatin("eight"));
console.log(translatePigLatin("glove"));
console.log(translatePigLatin("hmm"));
Последний тест с "hmm" приводит к ошибке: "Ошибка типа: str.match (...) равен нулю".
Мне легче понять, что здесь может помочь нулевое значение, но не уверен, имеет ли оно смысл и как это сделать.
Как мне лучше понять это и заставить его работать? Спасибо!