Имеется объект:
let cars = {
"car1": {
"doors": [red,green],
"wheels": [blue,yellow]
},
"car2": {
"wheels": [black]
},
"car3": {
"doors": [],
"wheels": []
},
"car4": {}
}
Необходимо отфильтровать его удалив "машины" с пустыми значениями свойств или без свойств, в примере выше это - "car3" и "car4".
Если бы это был
массив можно было бы воспользоваться
Array.prototype.filter():
cars.filter((car) => {
// делаем проверку на наличие и заполненность свойств
return "результат проверки";
})
Но у меня это
объект, а у объектов нет метода filter.
На данный момент я придумал решение через массивы ключей: получаю массив ключей объекта, фильтрую его, после чего удаляю из объекта ключи, которых нет в отфильтрованном массиве ключей.
let carsKeys = Object.keys(cars);
let carsKeysFilterd = carsKeys.filter((key) => {
// проверяем пункт cars[key] на соответствие требованиям
return "результат проверки";
})
carsKeys.forEach((key) => {
if (carsKeysFiltered.indexOf(key) === -1) delete cars[key];
})
Я понимаю что это, мягко говоря, не самое лаконичное решение, вот и пришёл к вам за помощью.
Как лучше организовать управление этим объектом в соответствии с заданными требованиями?
Уточнение мне это необходимо делать на серверной стороне. Возможно вы знаете для этого подходящий npm-модуль?