- Активируйте строгий режим соответствия.
- Добавьте в редактор следующий блок кода:
const clients = [{
name: 'Филип Фрай',
email: 'fray@mail.un',
isSubscribed: false,
orders: [ 11700, 1980, 450, 5500 ]
}, {
name: 'Бендер Сгибатель Родригес',
email: 'bender.rodriges@rambler.un',
isSubscribed: true,
orders: [ 440, 226, 7650, 2990, 70 ]
}, {
name: 'Доктор Джон Зоидберг',
email: 'zoidberg-md@list.un',
isSubscribed: true,
orders: [ 720 ]
}];У нас огромная база клиентов. В массиве clients представлен её фрагмент для экспериментов. Нам нужно реализовать возможность получить всю информацию о клиенте по его имени.
Реализовать метод findByName в массиве clients, который будет принимать имя клиента и возвращать объект клиента с таким именем (свойство name, строгое соответствие). Метод принимает следующие аргументы:
name— имя клиента, строка.
Функция должна вернуть объект клиента с таким именем, либо undefined, если такого клиента нет в нашем списке.
const clientOne = clients.findByName('Доктор Джон Зоидберг');
console.log(clientOne.email); // zoidberg-md@list.un
const clientTwo = clients.findByName('Люрр');
console.log(typeof clientTwo); // undefined- Создайте свойство в массиве
clientsс именемfindByName, присвоив туда функцию. - В теле функции найдите подходящий элемент самым оптимальным и очевидным способом.
- Верните найденный объект или
undefined.
Убедитесь, что пример использования функции работает так, как описано выше. И попробуйте свои варианты использования созданного метода.
Бывает, что нам нужно отсортировать список клиентов по убыванию сумм их покупок. Все суммы покупок доступны в свойстве orders.
Реализовать функцию compareByTotalSumm, которая принимает два объекта пользователя и возвращает 1, если второй объект имеет сумму покупок больше первого, 0, если суммы покупок равны, и -1, если второй объект имеет меньшую сумму покупок.
left— клиент из массиваclients, объект;right— клиент из массиваclients, объект.
Возвращает 1, 0 или -1. Для того, чтобы получить общую сумму объекта left или right, нужно просуммировать все элементы массива в свойстве orders.
Функция будет использоваться для передачи в метод sort массива.
clients
.sort(compareByTotalSumm)
.forEach(client => console.log(client.name));Если функция compareByTotalSumm реализована правильно, то вы увидите такой результат:
Филип Фрай
Бендер Сгибатель Родригес
Доктор Джон Зоидберг
- Создайте функцию
compareByTotalSumm. - Посчитайте сумму продаж для клиента из аргумента
left. - Посчитайте сумму продаж для клиента из аргумента
right. - Сравните их и верните результат.
Перед началом работы добавьте в редактор следующий код:
function sendMail(email) {
console.log(`Письмо отправлено на адрес ${email}`);
}Наш отдел маркетинга рассылает письма с информацией об акциях всем клиентам, которые подписаны на рассылку. У таких клиентов свойство isSubscribed равно true.
Создать функцию getSubscribedEmails, которая принимает список клиентов, получает электронные адреса подписанных пользователей и возвращает их массив. Принимает аргументы:
list— список клиентов, аналогичный массивуclients, массив.
Функция должна вернуть массив электронных адресов подписанных клиентов либо пустой массив.
getSubscribedEmails(clients).forEach(sendMail);Если функция getSubscribedEmails реализована верно, то получим такой вывод:
Письмо отправлено на адрес bender.rodriges@rambler.un
Письмо отправлено на адрес zoidberg-md@list.un
- Создайте функцию
getSubscribedEmails. - Получите оптимальным и логичным способом все электронные адреса клиентов, у которых
isSubscribedравноtrue. - Верните полученный массив электронных адресов.
Инструкция по выполнению домашнего задания:
- Зарегистрируйтесь на сайте Repl.IT.
- Перейдите в раздел my repls.
- Нажмите кнопку Start coding now!, если приступаете впервые, или New Repl, если у вас уже есть работы.
- В списке языков выберите JavaScript.
- Код пишите в левой части окна.
- Посмотреть результат выполнения файла можно, нажав на кнопку Run. Результат появится в правой части окна.
- После окончания работы нажмите кнопку Share и скопируйте ссылку из поля Share link.
- В личном кабинете на сайте netology.ru в поле комментария к домашней работе вставьте скопированную ссылку и отправьте работу на проверку.
Никаких файлов прикреплять не нужно.