- Активируйте строгий режим соответствия.
- Добавьте в редактор следующий блок кода:
const clients = [{
name: 'Филип Фрай',
email: '[email protected]',
isSubscribed: false,
orders: [ 11700, 1980, 450, 5500 ]
}, {
name: 'Бендер Сгибатель Родригес',
email: '[email protected]',
isSubscribed: true,
orders: [ 440, 226, 7650, 2990, 70 ]
}, {
name: 'Доктор Джон Зоидберг',
email: '[email protected]',
isSubscribed: true,
orders: [ 720 ]
}];
У нас огромная база клиентов. В массиве clients
представлен её фрагмент для экспериментов. Нам нужно реализовать возможность получить всю информацию о клиенте по его имени.
Реализовать метод findByName
в массиве clients
, который будет принимать имя клиента и возвращать объект клиента с таким именем (свойство name
, строгое соответствие). Метод принимает следующие аргументы:
name
— имя клиента, строка.
Функция должна вернуть объект клиента с таким именем, либо undefined
, если такого клиента нет в нашем списке.
const clientOne = clients.findByName('Доктор Джон Зоидберг');
console.log(clientOne.email); // [email protected]
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
реализована верно, то получим такой вывод:
Письмо отправлено на адрес [email protected]
Письмо отправлено на адрес [email protected]
- Создайте функцию
getSubscribedEmails
. - Получите оптимальным и логичным способом все электронные адреса клиентов, у которых
isSubscribed
равноtrue
. - Верните полученный массив электронных адресов.
Инструкция по выполнению домашнего задания:
- Зарегистрируйтесь на сайте Repl.IT.
- Перейдите в раздел my repls.
- Нажмите кнопку Start coding now!, если приступаете впервые, или New Repl, если у вас уже есть работы.
- В списке языков выберите JavaScript.
- Код пишите в левой части окна.
- Посмотреть результат выполнения файла можно, нажав на кнопку Run. Результат появится в правой части окна.
- После окончания работы нажмите кнопку Share и скопируйте ссылку из поля Share link.
- В личном кабинете на сайте netology.ru в поле комментария к домашней работе вставьте скопированную ссылку и отправьте работу на проверку.
Никаких файлов прикреплять не нужно.