Как при помощи метода forEach указать условие?

Суть:
Простецкая задача на перебор массива(Посчитать сколько раз встретилось true).
Решил таким образом(на codewars зачли):
function countSheeps(arayOfSheep) {
    let count = 0;
    for (let i=0;i<arayOfSheep.length; i++) {
      if(arayOfSheep[i]===true) {
        count++;
      } 
    }
    return count;
  }

По идее можно перебрать быстрее и более короткой записью при помощи forEach, например:
function countSheeps(arrayOfSheep) {
  let count = 0;
  arayOfSheep.forEach((item) => item===true  count++1);
  return count;
}

Но второй код через forEach выдаёт ошибку.Не могу понять, что делаю не так...Может в условие метода тернарник записать?
  • Вопрос задан
  • 165 просмотров
Решения вопроса 3
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
return arayOfSheep.filter((item) => item===true).length;

Или сокращённый вариант
return arayOfSheep.filter(Boolean).length;
Ответ написан
otdameskapizm
@otdameskapizm
Помог ответ? Отметь решением...
Ваш код не работает, потому что у вас там ошибка в этой строке
arayOfSheep.forEach((item) => item===true  count++1);

Если хотите тернарный оператор, то можете использовать вот так:
const countSheeps = function (arr) {
  let counter = 0;
  arr.forEach((sheep) => {
    counter += sheep === true ? 1 : 0;
  });
  return counter;
};
Ответ написан
Комментировать
Alexandroppolus
@Alexandroppolus
кодир
const countSheeps = (array) => array.reduce((count, item) => item===true  ? count + 1 : count, 0);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Дык синтаксическая ошибка. Что должен означать этот код?
(item) => item===true count++1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы