问题描述
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);