Фильтрация массива на основе списка выбора и удаление нерабочего поля

#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.
  

Спасибо тому, кто изобрел эту раздражающую концепцию, за мое дополнительное время, потраченное на эту часть кода!