Javascript функция фильтра массива удаляет ключевые значения - PullRequest
0 голосов
/ 17 марта 2020

У меня есть массив Javascript объектов, проиндексированных значениями ключей, перечисленными ниже, каждый ключ представляет объект Javascript (это просто console.log () значений ключей в массиве):

[ '532',
  '789',
  '1232',
  '2346',
  '3404',
  '4991',
  '5323',
  '5378',
  '8923',
  '9876',
  '23434',
  '23549',
  '24454',
  '34234',
  '45667',
  '48983',
  '67834',
  '72342',
  '82434',
  '89829',
  '98732',
  '123404',
  '143454',
  '234345',
  '345294',
  '532234',
  '532342',
  '532345',
  '532349',
  '989898' ]

Когда я console.log () выдает этот массив Javascript, он «заполняется» значениями «NULL». Например, первый ключ - 532, поэтому при печати этого массива сначала печатаются 531 значение «NULL», а затем объект Javascript с ключом 532 и т. Д. Для каждого ключа.

Поэтому мое решение состоит в том, чтобы удалить нулевые значения, запустив следующую функцию в массиве:

teamData = teamData.filter(function (el) {
   return el != null && el != "";
});

Моя проблема: . После запуска этой функции фильтра значения ключей массива сбрасываются на:

[ '0',
  '1',
  '2',
  '3',
  '4',
  '5',
  '6',
  '7',
  '8',
  '9',
  '10',
  '11',
  '12',
  '13',
  '14',
  '15',
  '16',
  '17',
  '18',
  '19',
  '20',
  '21',
  '22',
  '23',
  '24',
  '25',
  '26',
  '27',
  '28',
  '29' ]

Вопрос: Есть ли способ отфильтровать нулевые значения между ключами массива, сохраняя при этом ключ? значения в первом массиве? Есть ли другой способ структурировать эти данные, чтобы не было нулевых значений?

1 Ответ

1 голос
/ 17 марта 2020

Проблема в том, что вы пытаетесь использовать позицию индекса массива в качестве ключа. Это не сработает, потому что массивы всегда имеют последовательные индексы, начиная с 0. Поэтому, если у вас будет элемент с индексом 532, то перед ним обязательно будет 532 элемента (от 0 до 531). Если вы удалите эти элементы с filter, индексы сместятся в правильное положение, в вашем случае с 0 o 29. В Javascript есть собственный объект для вашего варианта использования, он называется Map, here Вы можете прочитать все об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...