2015-08-17 4 views
1

У меня есть форма, содержащая от 10 до 15 адресов электронной почты. Как я могу проверить, уникальны ли все адреса? И как я могу определить, какие из них являются дубликатами?Как проверить, что адреса электронной почты уникальны

Я ищу решение для JavaScript или jQuery.

+1

Я дала ответ, который является более эффективным, чем использование '$ .inArray'. –

+0

@MichaelLaszlo - еще одно преимущество - ваш ответ на самом деле работает. '$ .inArray (emailArray [i], emailArray)' будет _always_ '! = -1', потому что элемент массива' i' по определению находится в массиве. –

+0

@MichaelLaszlo не могли бы вы помочь мне разобраться в этом, посетите этот URL-адрес для получения более подробной информации http://stackoverflow.com/questions/32033105/validate-a-booking-form-with-more-than-one-user-record – Nikhil

ответ

1

Чтобы найти дубликаты в массиве, вставьте элементы в словарь, который отслеживает количество раз, когда появляется каждый элемент. Тогда каждый элемент с числом больше 1 является дубликатом.

Демонстрация:

function findDuplicates(data) { 
 
    var counts = {}; 
 
    data.forEach(function (item) { 
 
    if (counts[item] === undefined) { 
 
     counts[item] = 1; 
 
    } else { 
 
     counts[item] += 1; 
 
     if (counts[item] == 2) { 
 
     print('duplicate: ' + item); 
 
     } 
 
    } 
 
    }); 
 
} 
 

 
function print(s) { 
 
    document.write(s + '<br />'); 
 
} 
 

 
var addresses = ['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]']; 
 
findDuplicates(addresses);

1

Вы можете использовать массив писем и Постулаты JQuery inArray так:

function validateEmails() { 
    var emailArray = ["email1", "email2", "email3", "email4"]; 
    var outputArray = []; 
    for (int i = 0; i < emailArray.length; i++) { 
     if($.inArray(emailArray[i], outputArray) != -1) { 
      //item is not in array, add it 
      outputArray.push(emailArray[i]); 
     } else { 
      //item is a duplicate 
      alert("This is the duplicate email id:" + emailArray[i]); 
     } 
    } 
} 

По сути, вы просто читали каждый из почтовых идентификаторов вы имеете в массив, emailArray. Затем вы будете проходить через каждый объект. Если $.inArray не возвращает -1, тогда этот элемент является дубликатом, и окно будет предупреждать пользователя о указанном id.

+0

Спасибо приятель. это определенно будет работать :) – Nikhil

+0

Это определенно не сработает. '$ .inArray (emailArray [i], emailArray)' никогда не равен -1, и он будет утверждать, что все записи дублируются. –

+0

@ StephenP извините, я отредактировал его для работы. Я использовал код из проекта, который я сделал в прошлом, и забыл изменить все этапы – WookieCoder

Смежные вопросы