Javascript:对具有第一个属性的对象数组进行排序,并在与另一个属性相等的情况下进行排序

问题描述

我有一个看起来像这样的数组:

let myarray = 
[{id:1,name: "mark",birthday: "1990-08-18"},{id:2,name: "fred",birthday: "1990-08-17"},{id:3,name: "franck",birthday: "1990-08-16"},{id:4,name: "mike",birthday: "1990-08-15"},{id:5,name: "jean",birthday: "1990-08-17"}]

我正在按“ 生日

对对象进行排序
myarray.sort((a,b) => new Date(b.birthday).getTime() - new Date(a.birthday).getTime());

但有时,我对两个对象具有相同的生日值(生日是相等的), 在这种情况下,我希望排序将这两个对象(不是所有对象)与具有较高 id ”(具有较高的值)进行比较id是优先的)

建议?

解决方法

您需要在sort函数中添加一个单独的大小写,如下所示:

let myarray = [
{id:1,name: "mark",birthday: "1990-08-18"},{id:2,name: "fred",birthday: "1990-08-17"},{id:3,name: "franck",birthday: "1990-08-16"},{id:4,name: "mike",birthday: "1990-08-15"},{id:5,name: "jean",birthday: "1990-08-17"}
]

myarray.sort((a,b) => {
     let dif = new Date(b.birthday).getTime() - new Date(a.birthday).getTime();
     if(dif != 0) return dif;
     else return b.id - a.id;
});
console.log(myarray);