Проблема с использованием _.compact lodash для устранения нулевых значений в массиве объектов - PullRequest
0 голосов
/ 22 мая 2019

Я манипулирую массивом объектов, которые я получаю из http-запроса, содержащего координаты, для создания маркеров в Google-картах, но мне нужно устранить все нулевые значения в массиве. Я пытаюсь с компактным, но он возвращает тот же массив без изменений.

// это результирующая структура массива

var array=
[{"id":0,"latitude":45.17850875854492,"longitude":7.773523330688477},{"id":1,"latitude":45.122344970703125,"longitude":7.7135162353515625},{"id":2,"latitude":null,"longitude":null},{"id":3,"latitude":45.11630630493164,"longitude":7.730717658996582},{"id":4,"latitude":45.116214752197266,"longitude":7.730687141418457},{"id":5,"latitude":null,"longitude":null}]

var comp =_.compact(array) 

Я не получаю никакой ошибки в cosole, но переменная comp возвращает тот же самый массив без удаления нулевых значений

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Вы можете использовать _.pickBy ()

Создает объект, состоящий из предиката свойств объекта, возвращает truey для

lodash

Это относится к объекту, поэтому для массива вы можете использовать это:

var comp = _.map(array, item => _.pickBy(item));
0 голосов
/ 22 мая 2019

Все ваши значения являются массивами, а null является значением ваших свойств.Метод _.compact() работает с примитивами.

Используйте _.reject() и проверьте с помощью _.isNull, являются ли свойства null, и объект должен быть удален:

const array =
[{"id":0,"latitude":45.17850875854492,"longitude":7.773523330688477},{"id":1,"latitude":45.122344970703125,"longitude":7.7135162353515625},{"id":2,"latitude":null,"longitude":null},{"id":3,"latitude":45.11630630493164,"longitude":7.730717658996582},{"id":4,"latitude":45.116214752197266,"longitude":7.730687141418457},{"id":5,"latitude":null,"longitude":null}]

const result = _.reject(array, ({ latitude, longitude }) =>
  _.isNull(latitude) || _.isNull(longitude)
)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...