Как проверить дублирование электронной почты из массива в JavaScript? - PullRequest
0 голосов
/ 20 сентября 2018

Иметь два электронных письма и пытаться проверить, соответствует ли оно чему-либо в моем массиве данных, который является массивом электронных писем.

Думал, что приведенное ниже вернет true или false, но, похоже, не работает:

 const email1 = test.emailAddress.value;
 const email2 = test2.emailAddress.value;

 data.every(({ email }) => email.value === email1 || email.value === email2);

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Вы можете filter ваши данные с подобранным массивом из двух электронных писем, например:

const data = [
  {email: 'test@test.com'},
  {email: 'test1@test.com'},
  {email: 'test2@test.com'}
]

const email1 = 'test1@test.com'
const email2 = 'test2@test.com'

const matched = data.filter(({ email }) => [email1, email2].includes(email));
console.log(matched)
0 голосов
/ 20 сентября 2018

Согласно вашему коду, метод .every проверяет, является ли каждый email в массиве data либо email1, либо email2, если по крайней мере одно из писем в массиве data завершается с ошибкойусловие, метод .every возвращает false.Это означает, что метод .every не подходит для того, чего вы хотите достичь.

var exists = data.some(({email}) => [email1, email2].includes(email))

Это при условии, что data является массивом объектов, которые содержат атрибут электронной почты.Если данные - это просто массив строк электронной почты, то это должно быть

var exists = data.some(email => [email1, email2].includes(email))
0 голосов
/ 20 сентября 2018

Если вы не предоставите data, трудно понять, что происходит.Но вы можете использовать includes, чтобы проверить, присутствует ли элемент в массиве или нет.

Метод includes () определяет, включает ли массив определенный элемент, возвращая в зависимости от ситуации true или false.

if( data.includes(email1) || data.includes(email2)){ // ||  && depending upon your needs
   //do something
}
...