@Alex_87

Функция нахождения совпадения в строке?

Здравствуйте! Есть задание: 5e0499fdb67da185472389.png
Напомните мне пожалуйста, какая функция проверяет вхождение слова в другой строке. Я написал indexOf, но это немного не то!
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',
];

const freeEmailDomains = [
  'gmail.com',
  'yandex.ru',
  'hotmail.com',
];

function getFreeDomainsCount(arr){
  let result = [];
  let count = 0;
  
   for(let i = 0; i < freeEmailDomains.length; i += 1){
     for (let j = 0; j < arr.length; j += 1){
         if(freeEmailDomains[i] == arr.indexOf(arr[j])){
           count += 1;
         }
         
     }
     result += count;
   }
   return result;
}


console.log(getFreeDomainsCount(emails));
  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Зачем искать какие-то совпадения внутри строк? Вырезаете нужный кусок и проверяете его наличие в массиве:

const getFreeDomainsCount = arr => arr
  .map(n => n.split('@')[1])
  .filter(n => freeEmailDomains.includes(n))
  .reduce((acc, n) => (++acc[n], acc), Object.fromEntries(freeEmailDomains.map(n => [ n, 0 ])));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы