Суть задачи: дана строка, в ней нужно просуммировать все гласные
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. "Я его закомментировал"
Вы не можете сравнивать значение одной переменной сразу с несколькими значениями. Вам нужно сравнить значение с каждым из них. Пример:
Неправильно: a==b||c
Правильно: a==b||a==c
Есть такой вариант сравнения: [b,c].indexOf(a)+1
По большому счету все гораздо проще:
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?'));
Это так не работает. Потому что логические операторы, упрощённо говоря, являются функциями от двух аргументов со значениями 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" ...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
как обрезать длинную строку в IE8Перепробовал несколько вариантов ничего не вышло
Нужно сделать приложение для базы данных для курсовойЯ могу вывести все таблицы, используя QTableWidget, но, может быть, есть специальный класс...