'How set checked checkbox if it's value is in array

I have inputs:

  <div id="my">
   <input type="checkbox" value="1" name="names[]">
   <input type="checkbox" value="2" name="names[]">
   <input type="checkbox" value="3" name="names[]">
   <input type="checkbox" value="4" name="names[]">
  </div>

And my javascript:

initValues=[1,2,3];
$('#my').find(':checkbox[name="names[]"]').each(function () {
  $(this).prop("checked", ($.inArray($(this).val(), initValues)));
});

And now all my checkboxes are checked. How must I change my code to set checked for ckeckboxes which values are in initValues array?



Solution 1:[1]

let initValues = [1, 2, 3];
$('#my').find(':checkbox[name="names[]"]').each(function() {
  if (initValues.some(v => v == $(this).val())) {
    $(this).prop('checked', true);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my">
  <input type="checkbox" value="1" name="names[]">
  <input type="checkbox" value="2" name="names[]">
  <input type="checkbox" value="3" name="names[]">
  <input type="checkbox" value="4" name="names[]">
</div>

Solution 2:[2]

You need to turn the value back into a number so it compares with the array value.

$.inArray(+$(this).val(), initValues))

Revised Example:

initValues=[1,2,3];
         $('#my').find(':checkbox[name="names[]"]').each(function () {
   $(this).prop("checked", ($.inArray(+$(this).val(), initValues)) != -1);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
   <div id="my">
   <input type="checkbox" value="1" name="names[]">
   <input type="checkbox" value="2" name="names[]">
   <input type="checkbox" value="3" name="names[]">
   <input type="checkbox" value="4" name="names[]">
  </div>

Solution 3:[3]

function printChecked(isChecked, value) { const newProjectStages = projectstage.filter((p) => p !== value);

if (isChecked) {
  newProjectStages.push(value);
}

Setprojectstage(newProjectStages);

var items = document.getElementsByName("tr");
var selectedItems = [];
for (var i = 0; i < items.length; i++) {
  if (items[i].type == "checkbox" && items[i].checked == true)
    selectedItems.push(items[i].value);
}
console.log("selected val", selectedItems);
Setselectedprostages(selectedItems);

}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 kind user
Solution 2
Solution 3 Fueled soul