Я бы хотел решить следующую проблему: я хотел бы отфильтровать массив по определенным условиям с помощью Vue.js и lodash (или чистого JavaScript).
Мои объекты
- Я получил список
Items
.Каждый элемент содержит (необязательно) categories
. - Объект
Car
может иметь category
.
Массив объектов Items
"data": [
{
"id": 1,
"title": "Item 1",
"categories": [
{
"id": 4,
"title": "category 4",
"description": "",
},
{
"id": 5,
"title": "category 5",
"description": "",
}
]
},
{
"id": 2,
"title": "Item 2",
"categories": []
},
{
"id": 3,
"title": "Item 3",
"categories": []
}
]
Объект Car
{
"category": {
"id": 5,
"title": "category 5",
"description": ""
},
"title": "Test"
}
Моя цель
Я хотел бы показать только те Items
, которые соответствуют хотя бы одному из этих правил:
- The
Item
имеет по крайней мере один category
, который соответствует category
из Car
- .
Item
имеет no category
set
Мой подход
Я использую значение computed
для фильтрации this.items
:
computed: {
filteredItems: function () {
let vm = this;
return _.filter (this.items, function (item) {
return _.includes (item.categories, vm.car.category );
});
}
},
Текущий результат:
filteredItems
всегда пусто.