Как найти дубликаты в массиве с помощью 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();
}
});