Это трудно понять, потому что имена ужасны.obj
на самом деле число, используемое для перехода к позиции в строке, поэтому его лучше назвать pos
или что-то в этом роде.check
ничего не проверяет, просто перемещается вперед, пока не будет найден первый гласный, поэтому должно быть:
const firstVowel = (pos = 0) => "aeiou".includes(str.charAt(pos)) ? pos : firstVowel(pos + 1);
Теперь последняя строка просто берет часть из первого гласного (удаляет согласные в начале):
str.substr(/*from*/ firstVowel() /*till end*/)
Если первый гласный находится непосредственно в начале:
firstVowel() === 0
, он просто добавляет
"way"
, иначе он принимает эти согласные в начале:
str.substr(0, /*to*/ firstVowel())
и добавляет "y".