我有一个简单的复选框功能,一旦选中了复选框,它将把选定的元素保存到array A
中。并将array A
推送到函数外部的array B
中,这意味着每次使用复选框时,重复的数据将保存在Array B
中,但是我试图如果array B
已经具有与elements id
相同的array A
,则不要添加它。有没有简单的方法可以解决该问题?
JS
var last_check_elements = [];
function whatever(){
$('.check').on('click', function() {
var checkArray = [];
$('.check').each(function() {
checkArray = {id: $(this).attr('id'), value: $(this).prop('checked')};
last_check_elements.push(checkArray);
});
}
答案 0 :(得分:0)
如果您每次单击复选框都试图存储有关每个复选框的某种数据,则最好使用一个对象。否则,您每次要更新存储阵列时都必须遍历存储阵列(以检查元素是否已存在)。
如果运行以下代码段,则每次单击都会更新该对象。
const checkboxState = {}
function updateCheckboxState ({target: checkbox}) {
checkboxState[checkbox.id] = {
id: checkbox.id,
value: checkbox.checked
}
// remove log, just here to show behavior
console.log(checkboxState)
}
$('.check').on('click', updateCheckboxState)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label><input type="checkbox" class="check" id="1">1</label>
<label><input type="checkbox" class="check" id="2">2</label>
<label><input type="checkbox" class="check" id="3">3</label>
<label><input type="checkbox" class="check" id="4">4</label>
如果某个时候需要这些值的数组,则可以执行以下操作:
Object.values(checkboxState)