Подсчет количества одинаковых строк в массиве

Мне дана функция, аргумент которой является массив произвольной длины. В этом массиве мне нужно найти слова good. Если слов good будет 1 или 2 вернуть Good. Если слов good окажется больiе чем 2 вернуть Very good. Если слов good не окажется вернуть bed.

  function well(x){
  let arr=[]
  for(let i=0; i < x.length; i++){
    arr.push(x[i])
    if(arr.includes('good')<=2){
      return 'Good!'
    }
    if(arr.includes('good')>2){
      return 'Very good'
    }
    else{
    return 'bed'
    }
  }   
}

alert(well(['good', 'good', 'good', 'gg', 'rr', 'good', 'good'])) 

Ответы (3 шт):

Автор решения: Igor

function well(x) {
  let count = 0;
  for (let i = 0; i < x.length; i++) {
    if (x[i] == 'good')
      count++;
    if (count > 2)
      return 'Very good';
  }
  if (count == 0)
    return 'Bad';
  return 'Good';
}

console.log(well(['good', 'good', 'good', 'gg', 'rr', 'good', 'good']));
console.log(well(['good1', 'good2', 'good', 'gg', 'rr', 'good3', 'good']));
console.log(well(['good1', 'good2', 'good3', 'gg', 'rr', 'good4', 'good5']));

→ Ссылка
Автор решения: Дядя Вова

const well = words => {
    let marks = {0: "bed", 1: "good"};
    return marks[words.filter(word => word === "good").length] || "very good";
}

console.log(well(["good", "good", "bed", "red", "good"]));
console.log(well(["good", "car", "rain"]));
console.log(well(["apple", "pie"]));

Можно ещё так)

→ Ссылка
Автор решения: Менеджер Типографии
ar = ['good', 'good', 'good', 'gg', 'rr', 'good', 'good'];
res = ["bad", "Good", "Good", "Very Good"];

let i=0;
ar.forEach(e => { if (e == "good" && i<3) i++; })

alert (res[i]);
→ Ссылка