Сравните значения от каждого JS - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть это each(), которое собирает все отмеченные флажки с параметром data-is-rate = 1

 $('input[data-is-rate="1"]:checked').each(function(){
     console.log($(this).attr('data-id'));
 });

Из этого я получаю каждые data-id

111
222
333

Есть ли способ сравнить их? Идентификаторы не являются уникальными и могут быть одинаковыми, и мне нужно проверить.

Таким образом, если data-id повторяется, он должен вернуть ошибку.

Например, если вывод такой, он должен вернуть ошибку.

111
222
111

Если выходные данные выглядят так, то ошибки быть не должно, поскольку значения уникальны

111
222
333

Как их сравнить?

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Вы можете попробовать что-то вроде этого

var unique = {};
$('input[data-is-rate="1"]:checked').each(function(){
    if (unique[$(this).attr('data-id')]) {
        // Duplicate data-id, handle error
        alert('Duplicate data-id' + $(this).attr('data-id'));
    } else {
        unique[$(this).attr('data-id')] = 1;
    }
});
1 голос
/ 23 февраля 2020

что-то вроде этого может помочь, когда ошибка делает то, что нужно сделать ...

var ids = [];
$('input[data-is-rate="1"]:checked').each(function(){
  console.log($(this).attr('data-id'));
  
  if(ids.includes($(this).attr('data-id'))) {
      console.log(' E R R O R !');
  }
  
  ids.push($(this).attr('data-id'));
  
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input data-is-rate="1" type="checkbox" data-id="111" checked="checked">111
<input data-is-rate="1" type="checkbox" data-id="111" checked="checked">111
<input data-is-rate="1" type="checkbox" data-id="222" checked="checked">222
<input data-is-rate="1" type="checkbox" data-id="333" checked="checked">333

, если data-id="111" не проверен дважды, ошибки нет

var ids = [];
$('input[data-is-rate="1"]:checked').each(function(){
  console.log($(this).attr('data-id'));
  
  if(ids.includes($(this).attr('data-id'))) {
      console.log(' E R R O R !');
  }
  
  ids.push($(this).attr('data-id'));
  
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input data-is-rate="1" type="checkbox" data-id="111" checked="checked">111
<input data-is-rate="1" type="checkbox" data-id="111" >111
<input data-is-rate="1" type="checkbox" data-id="222" checked="checked">222
<input data-is-rate="1" type="checkbox" data-id="333" checked="checked">333
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...