Здравствуйте. Помогите пожалуйста решить данную задачу.
"Реализуйте и экспортируйте по умолчанию функцию, которая принимает на вход список емейлов, а возвращает количество емейлов, расположенных на каждом бесплатном домене. Список бесплатных доменов хранится в константе freeEmailDomains.
Я понимаю, что нам нужно создать функцию которая примет emails, дальше методом split обозначить “@”, затем пройтись через метод reduce, и сравнить домены… но возникает головоломка от неопытности. Направьте пожалуйста.
const emails = [
‘info@gmail.com’,
‘info@yandex.ru’,
‘info@hotmail.com’,
‘mk@host.com’,
‘support@hexlet.io’,
‘key@yandex.ru’,
‘sergey@gmail.com’,
‘vovan@gmail.com’,
‘vovan@hotmail.com’,
];
getFreeDomainsCount(emails);
// {
// ‘gmail.com’: 3,
// ‘yandex.ru’: 2,
// ‘hotmail.com’: 2,
// };"
На словах все верно описываешь. Думаю что непонятка происходит с тем как регистрировать домены. Вот пример кода без редьюса, из него станет понятнее
const emails = [
'info@gmail.com',
'info@yandex.ru',
'info@hotmail.com',
'mk@host.com',
'support@hexlet.io',
'key@yandex.ru',
'sergey@gmail.com',
'vovan@gmail.com',
'vovan@hotmail.com',
];
function countDomains(emails) {
const freeDomainEmails = ['gmail.com', 'yandex.ru', 'hotmail.com']
const res = {}
emails.forEach((email) => {
// извлекли домен
const [name, domain] = email.split('@')
// проверили из списка бесплатных ли он
if (freeDomainEmails.includes(domain)) {
// проверили успели ли мы посчитать его ранее
if (!res[domain]) {
// домен не был посчитан, делаем "начальное" состояние для подсчета
res[domain] = 0
}
// дописываем плюсдомен к тому количеству что было посчитано
res[domain] += 1
}
})
return res
}
console.log(countDomains(emails))
1 лайк
Спасибо большое, что расписали пошагово. Я сейчас буду анализировать код.