У меня есть довольно простой код, который проверяет, содержатся ли элементы в массиве в другом. Если это так, я вставляю в массив itens
флажок ввода, проверенный на ввод, если нет, я помещаю обычный флажок без флажка в массив. Проверьте это:
$.ajax({
url: '${pageContext.request.contextPath}/filial/select.json',
method: 'GET'
}).done(function(json) {
var itens=[];
var filiaisSelecionadas = ${filiais};
for (var i = 0; i < json.length; i++) {
if(filiaisSelecionadas.includes(json[i])) {
itens.push('<input id= "idFilial'+json[i][0]+'" type = checkbox class=checkbox1 name = filiaisId value="'+json[i][0]+'" checked>' +json[i][1]+"-"+ json[i][2] + '</input></br>');
} else {
itens.push('<input id= "idFilial'+json[i][0]+'" type = checkbox class=checkbox1 name = filiaisId value="'+json[i][0]+'">' +json[i][1]+"-"+ json[i][2] + '</input></br>');
}
}
$('#idFilial').html($("<tbody/>", {html:itens}));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Но по какой-то причине код внутри if(filiaisSelecionadas.includes(json[i]))
просто не выполняется. Лечение работает просто отлично. Если элемент не находится в массиве, он устанавливает флажок без флажка. Однако, если элемент находится в массиве, он просто не выполняется? Я бы понял, если он всегда выполняет оператор else, но не выполняет ни ???? Это сбивает с толку de b'jesus из меня ...
Редактировать: filiaisSelecionadas
(который заполняется ${filiais}
EL) является массивом объекта, который имеет множество свойств. Возвращаемый Json представляет собой массив тех же объектов, но не содержит таких же точных объектов, как другие. Массив json всегда либо больше, либо имеет тот же размер, что и filiaisSelecionadas
.
Редактировать 2: По запросу пользователя Hongarc я добавил console.log()
в if и else, результат будет следующим:
$.ajax({
url: '${pageContext.request.contextPath}/filial/select.json',
method: 'GET'
}).done(function(json) {
var itens=[];
var filiaisSelecionadas = ${filiais};
for (var i = 0; i < json.length; i++) {
if(filiaisSelecionadas.includes(json[i])){
console.log("The IF statement is executing!");
itens.push('<input id= "idFilial'+json[i][0]+'" type = checkbox class=checkbox1 name = filiaisId value="'+json[i][0]+'">' +json[i][1]+"-"+ json[i][2] + '</input></br>');
}
else{
console.log("The ELSE statement is executing!\"");
itens.push('<input id= "idFilial'+json[i][0]+'" type = checkbox class=checkbox1 name = filiaisId value="'+json[i][0]+'">' +json[i][1]+"-"+ json[i][2] + '</input></br>');
}
}
$('#idFilial').html($("<tbody/>", {html:itens}));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
с выводом две строки «Выражение ELSE выполняется!»
Имейте в виду, что мой массив jsonимеет размер 4 и для теста я сделал его таким образом, чтобы он содержал 2 объекта, которые находятся в другом массиве, и 2 - нет. Таким образом, ожидаемый результат должен был быть следующим: «Оператор IF выполняется!»x2 и "оператор ELSE выполняется!"x2.