Javascript:如何按多个字段对对象数组进行排序?

Javascript:如何按多个字段对对象数组进行排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个相当经典的例子,可以同时对多个字段进行排序。对我来说,困难的是传递带有字段的数据,以便从单独的数组中进行排序 常量数组排序=[ { 国家:“塞浦路斯”, 日期:新日期(2001年0月1日), 创作人:“威廉”, }, { 国家:“白俄罗斯”, 日期:新日期(1999年0月1日), 创作人:“Yuliana”, }, { 国家:“丹麦”, 日期:新日期(2019年0月1日), 创作人:“艾娃”, }, { 国家:“阿尔巴尼亚”, 日期:新日期(2000年0月1日), 创作者:“扎卡里”,

我有一个相当经典的例子,可以同时对多个字段进行排序。对我来说,困难的是传递带有字段的数据,以便从单独的数组中进行排序

常量数组排序=[
{
国家:“塞浦路斯”,
日期:新日期(2001年0月1日),
创作人:“威廉”,
},
{
国家:“白俄罗斯”,
日期:新日期(1999年0月1日),
创作人:“Yuliana”,
},
{
国家:“丹麦”,
日期:新日期(2019年0月1日),
创作人:“艾娃”,
},
{
国家:“阿尔巴尼亚”,
日期:新日期(2000年0月1日),
创作者:“扎卡里”,
}
];
const sortFields=[“国家”、“创建人”、“日期”];
常数递减=[真、假、真];
常量排序Darray=arrayToSort.sort((a,b)=>{
返回arrayToSort.forEach((字段,索引)=>{
const isDate=!isNaN(Date.parse(一个[field]);
如果(isDate){
const dateA=新日期(a[field]).getTime();
const dateB=新日期(b[字段]).getTime();
if(降序[索引]&&dateA日期B){
返回1;
}
返回0;
}
如果(降序[索引]&&a[字段]b[字段]){
返回1;
}
返回0;
})
})

控制台日志(Darray)我从一个函数开始,该函数按字段和降序布尔对两个对象进行排序

const sortBy = (a,b,field,desc) => {
  if(a[field]<b[field]) return desc ? 1 : -1
  else if(a[field]>b[field]) return desc ? -1 : 1
  else return 0;
};