Как найти дубликаты в массиве с помощью jquery

У меня есть массив jQuery:

var arr = $('input[name$="recordset"]');

Я получаю значение массива как 8 или 6

Если значения массива повторяются или повторяются, мне нужно показать "пожалуйста, не повторяйте значения". Если нет, мне нужно продолжить дальше.

Использование jQuery может ли кто-нибудь сказать мне, как найти повторяющиеся значения?

Ответ 1

var unique_values = {};
var list_of_values = [];
$('input[name$="recordset"]').
    each(function(item) { 
        if ( ! unique_values[item.value] ) {
            unique_values[item.value] = true;
            list_of_values.push(item.value);
        } else {
            // We have duplicate values!
        }
    });

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

Ответ 2

// For every input, try to find other inputs with the same value
$('input[name$="recordset"]').each(function() {
   if ($('input[name$="recordset"][value="' + $(this).val() + '"]').size() > 1)
      alert('Duplicate: ' + $(this).val());
});

Ответ 3

Надеюсь, что ниже фрагменты помогут, если кто-то ищет такое требование

var recordSetValues = $('input[name$="recordset"]').map(function ()    {
          return this.value;
      }).get();     
var recordSetUniqueValues = recordSetValues.filter(function (itm, i,    a) {
          return i == a.indexOf(itm);
      });
if (recordSetValues .length > recordSetUniqueValues.length)
      { alert("duplicate resource") }

Ответ 4

$('form').submit(function(e) {

    var values = $('input[name="recordset[]"]').map(function() {
      return this.value;
    }).toArray();

    var hasDups = !values.every(function(v,i) {
      return values.indexOf(v) == i;
    });
    if(hasDups){
       // having duplicate values
       alert("please do not repeat the values");
       e.preventDefault();
    }

});