Функция генерации массива email адресов

Не могу разобраться. Необходимо написать функцию, которая создаёт массив email-адресов, не попавших в чёрный список. В качестве аргументов функция должна принимать массив строк с исходными email адресами и массив строк с email адресами в чёрном списке.

const validEmail = ['[email protected]', '[email protected]', '[email protected]', '[email protected]','[email protected]'];
const blackList = ['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'];
const emailsInBlackList = [];
const emails = [];

function getValidEmail() {

    for (let email of validEmail) {
        if (email) {
            console.log('Валидный емаил! ' + validEmail);
            emails.push;
        }
    }

    for (let email of blackList) {
        if (email) {
            console.log('Не валидный емаил! ' + blackList);
            emailsInBlackList.push;
        }
    }

}

getValidEmail(emails);

Ответы (5 шт):

Автор решения: Konstantin Modin

Не был вызван метод push массива:

function getValidEmail() {

    for (let email of validEmail) {
        if (email) {
            console.log('Валидный емаил! ' + validEmail);
            emails.push(email);
        }
    }

    for (let email of blackList) {
        if (email) {
            console.log('Не валидный емаил! ' + blackList);
            emailsInBlackList.push(email);
        }
    }

}
→ Ссылка
Автор решения: Artur Nailevich

Непонятен смысл вашей функции

  1. В качестве аргументов функция должна принимать массив строк с исходными email адресами - у вас же на входе сразу список валидных email - validEmail.
  2. Необходимо написать функцию, которая создаёт массив email-адресов, не попавших в чёрный список. - соответственно не создать массив не попавших в черный список. Ваша функция всегда выводит: Валидный емаил! - массив validEmail Не валидный емаил! - массив blackList

Если делать по условиям то так скорее:

    const allEmails = ['[email protected]', '[email protected]', '[email protected]',  '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'];
    const blackList = ['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'];
    let count;
    let validAll = [];
    function generateValid(allE, black) {
        for (let indexAll in allE) {
            count = 0;
            for (let indexBlack in black) {
                if (allE[indexAll] === black[indexBlack]) {
                    break;
                }
                else if (count === black.length-1) {
                    validAll.push(allE[indexAll]);
                    }
                else {
                    count++;
                }
            }
        }
        return validAll;
    }
    let validEmails = generateValid(allEmails, blackList);
    console.log(validEmails);
→ Ссылка
Автор решения: Artur Nailevich

Сделал еще с использованием includes и forin (посмотрел, можно было проще через forof сделать, но еще не прошел на тот момент)

    const allEmails = ['[email protected]', '[email protected]', '[email protected]',  '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'];
    const blackList = ['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'];
    let validAll = [];
    function generateValid(allE, black) {
        for (let indexAll in allE) {
            if (!black.includes(allE[indexAll])) {
                validAll.push(allE[indexAll]);
            }
        }
        return validAll;
    }
    let validEmails = generateValid(allEmails, blackList);
    console.log(validEmails);
→ Ссылка
Автор решения: Нагибаю ТвоиМечты

function filter(mail, blacklist) {
    // console.log(mail, blacklist);
    for (let list of mail) {
        // console.log(list);
      let z = blacklist.indexOf(list);
    //   console.log(z)
      if (z === -1) {
        emails.push(list)
      }
    }
}

let emails = [];
let postalAddresses = ['dalv', 'ProdVil', '12345', 'login', 'dick', 'fiLoR2'];
let postalAddressesBlecklist = [ '12345', 'login', 'dick'];

filter(postalAddresses, postalAddressesBlecklist);
console.log(emails);

Как вариант)

→ Ссылка
Автор решения: Айхан Р.
function filter(validEmail , blackList) {
    let filteredMails = [];

    for (let i = 0; i < validEmail .length; i++) {
        if (!blackList.includes(validEmail [i])) {
            filteredMails.push(validEmail [i])
        }
    }
    return filteredMails;
}

let validEmail = ['[email protected]', '[email protected]', 
                  '[email protected]', '[email protected]', 
                  '[email protected]'];
let blackList = ['[email protected]', '[email protected]',
                 '[email protected]', '[email protected]', 
                 '[email protected]'];
let result = filter(validEmail , blackList)

console.log(result)
→ Ссылка