Sorting 两个属性Vuejs的排序数组
如何为两个属性(如“姓氏”-“名称”)对数组对象排序 我尝试了串联,但它不起作用,因为它只对第二次排序进行排序:Sorting 两个属性Vuejs的排序数组,sorting,vue.js,Sorting,Vue.js,如何为两个属性(如“姓氏”-“名称”)对数组对象排序 我尝试了串联,但它不起作用,因为它只对第二次排序进行排序: computed:{ sortedArray: function() { function name(a, b) { if (a.name < b.name) return -1; if (a.name > b.name) return 1; return 0; } func
computed:{
sortedArray: function() {
function name(a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
}
function surname(a, b) {
if (a.surname < b.surname) return -1;
if (a.surname > b.surname) return 1;
return 0;
}
return this.users.sort(surname).sort(name);
}
}
计算:{
SorterDarray:函数(){
函数名(a,b){
如果(a.nameb.name)返回1;
返回0;
}
函数姓氏(a,b){
如果(a.姓氏b.姓氏)返回1;
返回0;
}
返回此.users.sort(姓氏).sort(名称);
}
}
我也尝试过:
function surname(a, b) {
return a.surname < b.surname || a.name < b.name
}
函数姓氏(a,b){
返回a.姓
但它返回的数组不是按姓氏/姓名排序的实际上非常接近 问题是当您执行以下操作时:
return this.users.sort(surname).sort(name);
首先按姓氏排序,然后按姓名排序,忽略姓氏
解决方案是使用一个同时处理两个属性的函数。因此,将这些排序函数合并为一个
另一件事是,您的计算机正在进行排序。您可能希望克隆数组并在computed属性中返回排序副本
newvue({
el:“#应用程序”,
数据:{
用户:[
{姓名:“约翰”,姓氏:“纳什”},
{姓名:“保罗”,姓氏:“普林格斯”},
{姓名:“鲍勃”,姓氏:“普林格斯”},
{姓名:“鲍勃”,姓氏:“艾比”},
{姓名:“爱丽丝”,姓氏:“艾比”},
]
},
计算:{
SorterDarray:函数(){
函数名(a,b){
如果(a.姓氏b.姓氏)返回1;
如果(a.nameb.name)返回1;
返回0;
}
//返回this.users.sort(姓氏);//就地排序
返回[…this.users].sort(姓氏);//浅克隆+排序
}
}
})
未排序:
{{users}
已排序:
{{sortedArray}
可能重复的可能重复的感谢,即使是为了解释!