Arrays 具有多个属性的对象的Typescript排序数组
我喜欢使用具有多个属性的对象对数组进行排序。我的对象有一个名为name的字符串和一个名为mandatory的布尔值 首先我想按年龄排序,然后是名字 我该怎么做 按年龄排序很容易…:Arrays 具有多个属性的对象的Typescript排序数组,arrays,typescript,sorting,Arrays,Typescript,Sorting,我喜欢使用具有多个属性的对象对数组进行排序。我的对象有一个名为name的字符串和一个名为mandatory的布尔值 首先我想按年龄排序,然后是名字 我该怎么做 按年龄排序很容易…: this.model.mylist.sort((obj1: IObj, obj2: IObj => { if (obj1.age < obj2.age) { return -1; } if (obj1.age > obj2.age) { ret
this.model.mylist.sort((obj1: IObj, obj2: IObj => {
if (obj1.age < obj2.age) {
return -1;
}
if (obj1.age > obj2.age) {
return 1;
}
return 0;
});
this.model.mylist.sort((obj1:IObj,obj2:IObj=>{
if(obj1.ageobj2.age){
返回1;
}
返回0;
});
好吧,您只在两个年龄值相同的情况下添加比较。因此类似的方法应该可以工作:
this.model.mylist.sort((obj1: IObj, obj2: IObj) => {
if (obj1.age < obj2.age) {
return -1;
}
if (obj1.age > obj2.age) {
return 1;
}
return obj1.name.localeCompare(obj2.name);
});
this.model.mylist.sort((obj1:IObj,obj2:IObj)=>{
if(obj1.ageobj2.age){
返回1;
}
返回obj1.name.localeCompare(obj2.name);
});
类似的方法应该有效。该方法比较当前值和下一个值,并在两个年龄值相同的情况下添加比较。然后根据年龄按顺序假定列名
private compareTo(val1, val2, typeField) {
let result = 0;
if (typeField == "ftDate") {
result = val1 - val2;
} else {
if (val1 < val2) {
result = - 1;
} else if (val1 > val2) {
result = 1;
} else {
result = 0;
}
}
return result;
}
private compareTo(val1、val2、typeField){
设结果=0;
如果(类型字段==“ftDate”){
结果=val1-val2;
}否则{
if(val1val2){
结果=1;
}否则{
结果=0;
}
}
返回结果;
}
-
this.model.mylist.sort((a,b)=>{
让cols=[“年龄”,“姓名];
设i=0,result=0,resultordem=0;
while(结果===0&&i
您的问题解决了吗?您能解释一下您的答案吗?很简单,该方法比较当前值和下一个值,并在两个年龄值相同的情况下添加比较。然后根据年龄按顺序假定列名。请将此解释添加到您的答案中。
this.model.mylist.sort((a, b) => {
let cols = ["age", "name"];
let i = 0, result = 0, resultordem = 0;
while (result === 0 && i < cols.length) {
let col = cols[i];
let valcol1 = a[col];
let valcol2 = b[col];
let typeField = "string";
if (col == "age") {
typeField = "number";
}
if (valcol1 != "null" && valcol1 != "null") {
resultordem = this.compareTo(valcol1, valcol2, typeField);
if (resultordem != 0) {
break;
}
}
i++;
}
return resultordem;
});