#javascript #html #arrays
#javascript #HTML #массивы
Вопрос:
пожалуйста, помогите мне, как изменить мой код, чтобы иметь возможность фильтровать массив на основе выпадающего списка, а затем удалять поле из массива.
Код загружен здесь: http://jsfiddle.net/x8e3rvcj
Это работает, если я выбираю первый и второй элемент списка, но возвращает пустой массив после третьего / четвертого выбора, кажется, из-за удаления поля в результирующем массиве. Если я удалю часть удаления, выбор будет работать правильно.
Часть удаления, похоже, вызывает проблему:
finalArray = jQuery.each(finalArray, function(arrElem, arrValue) {
Delete arrValue.MID;
});
Спасибо
Комментарии:
1. Фильтр работает, как и ожидалось, что-то портит код в функции onchange, когда я пытаюсь удалить поле из результирующего массива фильтра. Я просто пытаюсь выяснить, почему и как выполнить удаление в событии onchange?
2. Используется
splice()
для удаления элемента из массива. Можно легко получить его индекс с помощью indexOf ()
Ответ №1:
После дня поиска я обнаружил, что копирование / редактирование массивов в javascript влияет на любую копию массива в области видимости. Это называется мутацией.
Решение: не просто скопируйте массив, а «глубоко» скопируйте его:
let copyArray = JSON.parse(JSON.stringify(valueArr)); //... etc.
Спасибо тому, кто изобрел эту раздражающую концепцию, за мое дополнительное время, потраченное на эту часть кода!