Вы можете использовать функцию sort
для массива.
Например:
const filtered = [
{price: 20, date: '12-12-2020'},
{price: 15, date: '23-12-2019'},
{price: 23, date: '12-12-2028'},
].sort((prev, curr) => prev.price - curr.price);
console.log(filtered)
Вы можете передать свой массив в мой массив и вернуть отфильтрованный массив.
prev
- предыдущий объект, curr
- текущий объект.
Что такое sort
?
Это функция, обеспечивающая функцию обратного вызова для сортировки массива.
Я отсортировал по цене, которую вы можете попробовать price
и date
Для вас код:
<select v-model="sortType" v-on:change="sortItem()">
<option value="">Sort Type</option>
<option value="price">Price</option>
<option value="created_at">Date</option>
</select>
<ul>
<li v-for="item of estates">Price: {{item.price}}, Date: {{item.created_at}}</li>
</ul>
Сценарий:
data: () => {
return {
sortType: '',
estates: []
}
},
mounted() {
this.estates = [{
price: 20,
created_at: '2019-01-28 09:31:42'
},
{
price: 15,
created_at: '2019-01-28 09:31:42'
},
{
price: 23,
created_at: '2019-01-28 09:30:42'
},
];
},
methods: {
sortItem() {
if (this.sortType == 'price') {
this.estates = this.estates.sort((prev, curr) => prev.price - curr.price);
}
if (this.sortType == 'created_at') {
this.estates = this.estates.sort((prev, curr) => Date.parse(prev.created_at) - Date.parse(curr.created_at));
}
}
}