"use strict";

function vovelsAndConstants(s) {

  let vowels = new Array();
  let constants = new Array();

  for (let a = 0; a < s.length; a++) {
    //console.log(s[a]);
    if (s[a] === "a" || "e" || "i" || "o" || "u") {
      console.log(s[a]);
    }
  }
 
}

vovelsAndConstants("sosisvesalam");

Я не могу понять, почему здесь не работает оператор или. Для меня все это имеет смысл. Он выводит все символы вместо гласных

2
Mike Wazowksi 16 Янв 2021 в 15:59

4 ответа

Лучший ответ

Вам нужно проверить равенство для каждого случая:

function vovelsAndConstants(s) {
  const vowels = new Array();
  const constants = new Array();
  for (let a = 0; a < s.length; a++) {
    if (s[a] === "a" || s[a] === "e" || s[a] === "i" || s[a] === "o" || s[a] === "u") {
      console.log(s[a]);
    }
  }
}

vovelsAndConstants("sosisvesalam");

Другой способ использования .indexOf :

const VOWEL_LETTERS = ["a","e","i","o","u"];

function vovelsAndConstants(s) {
  const vowels = new Array();
  const constants = new Array();
  for (let a = 0; a < s.length; a++) {
    if (VOWEL_LETTERS.indexOf(s[a]) !== -1) {
      console.log(s[a]);
    }
  }
}

vovelsAndConstants("sosisvesalam");
1
Majed Badawi 16 Янв 2021 в 13:17

ИМО, самый простой способ - использовать includes, иначе вам придется перечислять все различные сравнения отдельно.

Замените это

s[a] === "a" || "e" || "i" || "o" || "u"

С участием:

["a","e","i","o","u"].includes(s[a])

Он будет выполнять сравнение строк, а не сравнение типов, как ===, но он все равно может работать для вас.

3
Marios 16 Янв 2021 в 13:02

Для вас это имеет смысл в зависимости от языка, на котором мы говорим, тогда как в программировании вы должны быть явным.

if (s[a] === "a" || s[a] === "e" || s[a] === "i" || s[a] === "o" || s[a] === "u") {
   console.log(s[a]);
}

JavaScript не знает, с чем вы сравниваете «e», «i» или «o», вам нужно говорить это каждый раз.

1
Dark Hippo 16 Янв 2021 в 13:01

Ваше текущее состояние успешно сравнивает только символ a . При второй проверке весь сегмент сравнения равен true , следовательно, выводятся все символы.

Вы должны сравнить текущий повторяющийся символ со всеми возможными гласными в условии:

"use strict";

function vovelsAndConstants(s) {

  let vowels = new Array();
  let constants = new Array();

  for (let a = 0; a < s.length; a++) {
    if (s[a] === "a" || s[a] ==="e" || s[a] ==="i" || s[a] ==="o" || s[a] ==="u") {
      console.log(s[a]);
    }
  }
 
}

vovelsAndConstants("sosisvesalam");
1
Mamun 16 Янв 2021 в 13:12
65749928