javascript - 如何对具有观察值的多个对象进行排序?Vue
问题描述
我在其中创建了一个select
元素,HTML
并希望为用户创建一个选项,以通过选择元素选项对表格进行排序values
。
我要排序的data
(会有很多对象):
我正在观看具有排序 v-model 值的选择元素:
watch: {
search: function (val) {
if (val.length === 0) return this.filtered = this.affiliates;
this.filtered = this.affiliates.filter(function (cont) {
return cont.shop_name.toLowerCase().indexOf(val.toLowerCase()) >= 0 || cont.app_name.toLowerCase().indexOf(val.toLowerCase()) >= 0;
});
},
sort: function (val) {
console.log(this.filtered);
},
我如何objects
按观看值排序?
数据存储在this.filtered
我想按这些值排序:
<select v-model="sort">
<option value="date_installed">Latest</option>
<option value="status">Status</option>
<option value="share">Share</option>
</select>
解决方案
虽然您可以使其与 a 一起使用watch
,但这似乎更适合computed
排序函数将比较函数作为参数,您可以根据排序偏好动态比较对象,方法是使用访问器的括号表示法将其作为键传递。
<template>
<div>
<select v-model="sortBy">
<option value="date_installed">Latest</option>
<option value="status">Status</option>
<option value="share">Share</option>
</select>
<ul>
<li v-for="item in filtered" :key="item.id">{{ item.app_name}}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
sortBy: [],
affiliates: [
//...
]
}
},
computed: {
filtered() {
if (val.length === 0) return this.affiliates;
return this.affiliates.sort( (a,b) => {
return a[this.sortBy] - b[this.sortBy]
});
}
},
}
</script>
推荐阅读
- angular - 是否可以在角度库的 dist 文件夹中有 scss 文件?
- c# - 无法将类型“MongoDB.Driver.ReplaceOneResult”隐式转换为“T”
- ios - Xamarin.iOS 等效于 Xamarin.Android 的 CookieManager.Instance
- android - 应用程序被杀死时未收到 Firebase 通知
- django - 当用户在继承自 UserCreation 表单的 UserRegister 表单上注册时,如何自动将用户添加到组中
- google-cloud-platform - 如何使用 terraform 停止 GCP 虚拟机实例
- node.js - 无法在 Heroku 上托管 MEAN 堆栈应用程序
- c++ - 重载 operator() 的左值解释
- css - 在上下文中将 CSS 变量相互关联
- python-3.x - 如何使用 k-means 算法对具有适当缩放两个轴的导入数据集进行聚类