Итак, ваши tableData - это массив таких объектов:
[
{
"category":"Name",
"year":2019,
"username":"test",
"otherValues":[
{
"someVal":30,
"otherVal":20
},
]
},
]
, и вам необходимо отфильтровать элементы в массиве по названию выбранной категории.К счастью, JavaScript может сделать это довольно легко для нас.Есть несколько методов, которые вы можете использовать для работы с массивами, но в этом случае я думаю, что метод filter()
должен работать достаточно хорошо.Здесь есть дополнительная информация здесь .
В основном вам нужен новый массив, который будет отображать выбранные данные или, если ничего не выбрано, показывать весь массив tableData.Это должно быть вычисляемое свойство.
computed: {
filteredTableData() {
if (this.selectedCat !== null) {
const filtered = this.tableData.filter(d => d.category === this.selectedCat)
return filtered
}
return this.tableData
},
}
Это предполагает, что когда вы инициализируете selectedCat
в данных, вы устанавливаете его в ноль.Поэтому, когда кто-то выбирает категорию, он будет удовлетворять условию «если», а наш const «отфильтрованный» будет новым массивом всех элементов «tableData», которые соответствуют нашему условию.Если ничего не выбрано, возвращается весь массив tableData.
Когда вы обращаетесь к 'tableData' в своем шаблоне, предположительно с v-for="data in tableData"
, вам теперь придется использовать v-for="data in filteredTableData"
.