let letters = 'АаЕеIiOoUuYy' //Создал переменную со строкой с гласными
Почему символы из разных алфавитов? - первые четыре кириллические.
if (arg1[i] == letters[j]) { //Если элемент слова равен элементу строки с согласными
newArr.push(arg1[i].indexOf()) //То пушу в массив индексы гласных этого слова
}
Зачем тут indexOf (кстати, вы не знаете, что он делает, откройте документацию и разберитесь)? Что является индексом проверяемого символа? Строчкой выше ещё помнили, а когда до push'а дело дошло, уже забыли? Просто
.push(i)
.
Не ошибка, но упомянуть косячок стоит - после найденного совпадения продолжать крутить внутренний цикл смысла нет. Гуглите, как прервать цикл.
Ну и это, как ещё можно сделать:
const getVowelsIndexes = str =>
Array.from(str.matchAll(/[aeiouy]/gi), n => n.index);
или
const getVowelsIndexes = ((vowels, str) =>
Array.prototype.reduce.call(
str.toLowerCase(),
(acc, n, i) => (vowels.has(n) && acc.push(i), acc),
[]
)
).bind(null, new Set('aeiouy'));
или
const getVowelsIndexes = str => Object
.entries(str)
.filter(n => 'AaEeIiOoUuYy'.includes(n[1]))
.map(n => +n[0]);
или
const getVowelsIndexes = str =>
eval(`[${[...str]
.map((n, i) => /a|e|i|o|u|y/i.test(n) ? `${i},` : '')
.join('')
}]`);