str[i] == "A" || "a" || "E" || "e" || "I" || "i" || "O" || "o" || "U" || "u")
Это сравнение буквально означает следующее
str[i] == "A" || true || true || true || true || true || true || true || true || true)
Нужно для каждого кейса выполнять сравнение
if (str[i] === "A" || str[i] === "a" || str[i] === "E" И так далее
Так же в JS строки являются иммутабельными. Ты не можешь их так изменить str[i] = ''
Вот более лаконичное решение
const str = 'hello my friend'
const result = str.replace(/[aeiouAEIOU]/g, ' ')
console.log(result)