Логический оператор ||

171
29 марта 2019, 04:00

Суть задачи: дана строка, в ней нужно просуммировать все гласные

        function getCount(str){
        var vowelsCount = 0;
        var array = [];
        array = str.split("");
        for (var s=0;s<array.length;s++){
            if(array[s] === "a"/*||"e"||"i"||"o"||"u"*/){
                vowelsCount += +1;
            }
        }
        //a, e, i, o, u,
        return vowelsCount;
    }
    console.log(getCount("abracadabra"));
    console.log(getCount("abcdu"));

Вопрос почему не срабатывает оператор || P.S. "Я его закомментировал"

Answer 1

Вы не можете сравнивать значение одной переменной сразу с несколькими значениями. Вам нужно сравнить значение с каждым из них. Пример:

Неправильно: a==b||c

Правильно: a==b||a==c

Есть такой вариант сравнения: [b,c].indexOf(a)+1

Answer 2

По большому счету все гораздо проще:

const countVowels = (w) => { 
  return w.match(/[aeiou]/g).reduce((a, v) => { 
    a[v] = a[v] === undefined ? 1 : a[v] += 1; 
    return a; 
  }, {}); 
} 
 
console.log(countVowels('abracadabra')); 
console.log(countVowels('abcdu')); 
console.log(countVowels('this code is fantastic, isn\'t it?'));

Answer 3

Это так не работает. Потому что логические операторы, упрощённо говоря, являются функциями от двух аргументов со значениями true / false. Они не работают с другими типами, со списками возможных совпадений. Мысленно представьте их как функции or(x, y), and(x, y), где x и y – булевые значения.

Используя такую нотацию логическое ИЛИ запишется так:

or(or(array[s] === "a"), equal(array[s] === "e")), equalarray[s] === "i"))
// и ещё несколько слоёв or

В итоге, код на JavaScript'e должен быть не такой:

array[s] === "a" ||"e" ||"I" ...

А такой:

array[s] === "a" || array[s] === "e" || array[s] === "i" ...
READ ALSO
Как поставить vue-owl-carousel в nuxt.js?

Как поставить vue-owl-carousel в nuxt.js?

Сделал все по инструкции

258
Как обрезать длинную строку в IE8?

Как обрезать длинную строку в IE8?

как обрезать длинную строку в IE8Перепробовал несколько вариантов ничего не вышло

131
Написать функцию на JS [дубликат]

Написать функцию на JS [дубликат]

На данный вопрос уже ответили:

166
PyQt5 для отображения таблиц базы данных

PyQt5 для отображения таблиц базы данных

Нужно сделать приложение для базы данных для курсовойЯ могу вывести все таблицы, используя QTableWidget, но, может быть, есть специальный класс...

195