Назад к задачам
Junior — Senior
11

Функция, выводящая в консоль сразу всех мяукающих котов

Компании, где спрашивали:

ProninTeam
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В отеле для животных принимаются только кошки и собаки. В этот день их количество одинаково – по 5 штук. Однако все кошки почему‑то мяукают. Функция fetchAnimals() имитирует получение списка всех животных и возвращает его с задержкой в одну секунду. Функция animalRecognizer() после небольшой паузы определяет тип животного и добавляет его в объект. Требуется реализовать функцию, которая после получения данных сразу выведет в консоль только те записи, где животное – кошка и её голос – мяуканье.

const ANIMAL_TYPE = {
  CAT: 'cat',
  DOG: 'dog',
};

const ANIMAL_VOICE = {
  MEOW: 'meow',
  WOOF: 'woof',
};

const TIMEOUT = {
  1000: 1000,
  75: 75,
};

class DataItem {
  constructor(name, voice) {
    this.name = name;
    this.voice = voice;
  }

  makeSound() {
    if (this.type) {
      console.log(this.name, '-', this.voice);
    } else {
      console.log('Ooops');
    }
  }
}

const ANIMALS_TYPE = {
  Molly: ANIMAL_TYPE.CAT,
  Felix: ANIMAL_TYPE.DOG,
  Smudge: ANIMAL_TYPE.CAT,
  Sooty: ANIMAL_TYPE.CAT,
  Tigger: ANIMAL_TYPE.CAT,
  Charlie: ANIMAL_TYPE.DOG,
  Alfie: ANIMAL_TYPE.CAT,
  Oscar: ANIMAL_TYPE.DOG,
  Millie: ANIMAL_TYPE.DOG,
  Misty: ANIMAL_TYPE.CAT,
};

const DATA = [
  new DataItem('Molly', ANIMAL_VOICE.MEOW),
  new DataItem('Felix', ANIMAL_VOICE.WOOF),
  new DataItem('Smudge', ANIMAL_VOICE.MEOW),
  new DataItem('Sooty', ANIMAL_VOICE.WOOF),
  new DataItem('Tigger', ANIMAL_VOICE.MEOW),
  new DataItem('Charlie', ANIMAL_VOICE.WOOF),
  new DataItem('Alfie', ANIMAL_VOICE.MEOW),
  new DataItem('Oscar', ANIMAL_VOICE.WOOF),
  new DataItem('Millie', ANIMAL_VOICE.WOOF),
  new DataItem('Misty', ANIMAL_VOICE.MEOW),
];

function fetchAnimals() {
  return new Promise(resolve => {
    setTimeout(resolve, TIMEOUT[1000], DATA);
  });
}

function animalRecognizer(dataItem) {
  const animalWithType = Object.create(dataItem);

  animalWithType.type = ANIMALS_TYPE[dataItem.name];

  return new Promise(resolve => {
    setTimeout(resolve, TIMEOUT[75], animalWithType);
  });
}

// Здесь необходимо реализовать функцию, которая получит список животных, распознает их типы и сразу выведет в консоль только мяукающих котов.