У меня есть массив, изначально загруженный из бэкэнда с 100 элементами.
console.log(array)
показывает 100 элементов.
Затем я получаю 1 новый элемент через ajax и добавляю его в массив с array.push(new_element);
console.log(array)
показывает 101 элемент.
Если я console.log(array[array.length-1])
, я получаю добавленный элемент.
Пока все хорошо, и данные верны , Это захват из добавленного элемента.
Затем я хочу показать подмножество выбранных элементов в списке.
sub_array = jQuery.grep(array, function(n) { return ( n.selected === 'True' });
Добавленный элемент 101 "выбран", подтвержден, но я не попадаю в sub_array.
Я проверил все логи c и все в порядке. Не могу понять, почему я не получаю элемент 101.
Похоже, команда grep получает данные массива из исходной версии, а не из обновленной.
Как, если это идет на более глубокий уровень памяти или что-то в этом роде. Это возможно?
Какой-то код
// Part 1 - The original data comes from Django backend
$(document).ready(function(){
window.array = {{ course_list|safe }};
};
// Part 2 - Adding extra value
$.ajax({
url:'/myurl',
contentType : "application/json",
dataType: 'json',
success:function(data){
console.log(array);
// Here I get the correct number of 100 elements
new_course = JSON.parse(data.extra_course);
array.push(new_course);
console.log(array);
// Here I get the correct number of 101 elements
},
error:function(data){
},
});
// Part 3 -
function create_agenda() {
console.log(array[array.length-1]);
// Here I get the added element correctly
sub_array = jQuery.grep(array, function(n) { return ( n.selected === 'True') });
// Here I don't get the element. Even filtering by other fields
};
пример элемента sub_array
Любая подсказка приветствуется !! Спасибо.