как проверить есть ли в массиве определённое количество значений?

забираю значение input Checked с нескольких form в масив с сайта и после нужно узнать есть ли в этом массиве определённое количество значений

и нужно сделать сравнение вот такое

Логика теста

1.Если хотя бы 2 значение 1, тогда что то. Если нет 2 значение 1, переходим к след. условию 2.Если хотя бы 2 значение 3, тогда что то, Если нет 2 значение 3, переходим к след. условию 3.Если хотя бы 2 значение 2, тогда что то, Если нет 2 значение 2, переходим к след. условию 4.Если хотя бы 2 значение 4, тогда что то, Если нет 2 значение 4, переходим к след. условию 5.Если хотя бы 2 значение 5, тогда что то, Если нет 2 значение 5, тогда что то

инпуты собираю вот так:

function getCheckedCheckBoxes() {
  var checkboxes = document.getElementsByClassName("checkbox");
  let checkboxesChecked = []; // можно в массиве их хранить, если нужно использовать
  for (var index = 0; index < checkboxes.length; index++) {
    if (checkboxes[index].checked) {
      checkboxesChecked.push(checkboxes[index].value);
      // положим в массив выбранный
      // alert(checkboxes[index].value); // делайте что нужно - это для наглядности

      checkboxesChecked.forEach(function (entry) {
        console.log(entry);
      });
    }
    checkboxesChecked.pop();
  }
  return checkboxesChecked; // для использования в нужном месте
}

Ответы (1 шт):

Автор решения: Leonid

Можно получить массив всех значений из "чекнутых" чекбоксов, затем получить массив уникальных значений (это не обязательно), пройтись по нему и найти первый же элемент, число который в основном массиве 2 и более. Если такой элемент есть, то выводим соответствующее сообщение, если нет, то другое.

Можно предварительно отсортировать массив значений по какой-то логике, например, если у вас от 1 до 5, то просто добавьте .sort() в конце.

Если надо что-то вывести для каждого случая, где 2 и более, то не find(), а filter().forEach() использовать.

document.querySelectorAll('input[type="checkbox"]').forEach(checkbox => {
    checkbox.addEventListener('change', analyze_data);
})

analyze_data();

function analyze_data(){
    const value_arr = [...document.querySelectorAll('input[type="checkbox"]:checked')].map(checkbox => checkbox.value);
    const unique_values = [...new Set(value_arr)];

    const len_2 = unique_values.find(val => value_arr.filter(v => v === val).length >= 2);

    console.clear();

    if(len_2){
        console.log(`Значений "${len_2}" хотя бы 2`);
    } else {
        console.log(`Нет ни одного значения хотя бы 2`);
    }
}
<input type="checkbox" value="1" checked><label>1</label>
<input type="checkbox" value="1"><label>1</label>
<input type="checkbox" value="3" checked><label>3</label>
<input type="checkbox" value="3" checked><label>3</label>
<input type="checkbox" value="4" checked><label>4</label>
<input type="checkbox" value="5"><label>5</label>
<input type="checkbox" value="2" checked><label>2</label>
<input type="checkbox" value="2" checked><label>2</label>

→ Ссылка