Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Zeace/javascript-task-4

Repository files navigation

Задача «Картофельная вечеринка»

Перед выполнением задания внимательно прочитайте:

Основное задание

Мы очень хотим, чтобы код вы написали сами, а не пользовались внешними библиотеками.

Это был особый год для Билли. Долгие годы он собирал информацию о своих друзьях и аккуратно записывал в свой блокнот с милым названием «Друзья Билли». Порой информация давалась нелегко и приходилось даже немножко за ними последить.

Осень уже давно наступила, журавли улетили на юг, картофель выкопан, а яблоки собраны. Билли практически все предусмотрел и спланировал для своей картофельной вечеринки! Осталось лишь пригласить своих друзей, настоящих друзей.

Каким бы странным это не показалось, в своём бумажном блокнотике Билли хранил записи о друзьях практически в JSON формате:

[
 {
 name: 'Сэм',
 age: 29,
 gender: 'Мужской',
 email: 'luisazamora@example.com',
 phone: '+7 (555) 505-3570',
 favoriteFruit: 'Картофель'
 },
 {
 name: 'Эмили',
 age: 30,
 gender: 'Женский',
 email: 'roachpugh@example.com',
 phone: '+7 (555) 539-2625',
 favoriteFruit: 'Яблоко'
 }
]

Помогите Билли и напишите конструктор запросов lego.js, который позволял бы фильтровать коллекцию друзей, сортировать её и выбирать необходимые для Билли поля.

В качестве основного задания реализуйте базовые операторы конструктора:

  • .query() – применяет операторы к коллекции друзей
  • .select() - выбирает необходимые поля
  • .format() - форматируем вывод конкретного поля
  • .filterIn() - фильтрует коллекцию
  • .sortBy() - сортирует коллекцию
  • .limit() - ограничивает коллекцию

Примеры использования конструктора можно посмотреть в index.js и в тестах.

Дополнительные условия и ограничения:

  • В любых операторах не должна портиться начальная коллекция
  • Если метод .query() вызвать только с коллекцией, то просто вернётся её копия
  • Метод .select() должен игнорировать несуществующие поля
  • Несколько вызовов метода .select() должны работать как один с персеченными параметрами
  • Фильтровать и сортировать можно по всем полям, а не только перечисленным в .select()
  • В тестах гарантируется, что метод .sortBy() будет вызван только один раз
  • В тестах гарантируется, что в метод .sortBy() передаются правильные значения для порядка сортировки
  • Методы .limit() и .format() всегда отрабатывают последними, независимо от их порядка

Дополнительное задание (+6 к харизме, +4 к интеллекту)

Перед выполнением внимательно прочитайте про особенности

Для Билли будет удобно, если вы реализуете два дополнительных условных оператора .or() и .and(), которые позволяют объединять несколько фильтров .filterIn() в логические цепочки.

В тестах гарантируется, что в .or() и .and() будут передаваться только .filterIn().

Примеры использования этих операторов можно посмотреть в index.js и в тестах.

About

Задача «Картофельная вечеринка»

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • JavaScript 100.0%

AltStyle によって変換されたページ (->オリジナル) /