Javascript 如何对JS对象数组进行排序

Javascript 如何对JS对象数组进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我试图根据计划的开始对这个JavaScript对象数组进行排序 我尝试了以下方法: rowObj.sort(function(a, b) { return a["Planned Start Date"] < b["Planned Start Date"]; }); rowObj.sort(函数(a,b){ 返回a[“计划开始日期”]

我试图根据计划的开始对这个JavaScript对象数组进行排序

我尝试了以下方法:

rowObj.sort(function(a, b) {
        return a["Planned Start Date"] < b["Planned Start Date"];
});
rowObj.sort(函数(a,b){
返回a[“计划开始日期”]
我是从


我也尝试了
localeCompare()
,但似乎仍然可以得到我想要的结果

javascript中的排序是字符串排序。但是你要比较日期。因此,将字符串转换为日期,然后进行比较

rowObj.sort(function(a, b) {
    return new Date(a["Planned Start Date"]) < new Date(b["Planned Start Date"]);
});
rowObj.sort(函数(a,b){
返回新日期(a[“计划开始日期”)<新日期(b[“计划开始日期”);
});

您需要将比较值转换为日期,并返回0、1或-1的值

arr.sort(function(a,b){
   return new Date(a['Planned Start Date']) - new Date(b['Planned Start Date']);
});
或相反:

arr.sort(function(a,b){
   return new Date(b['Planned Start Date']) - new Date(a['Planned Start Date']);
});
有关更多详细信息,请参阅本文:

尝试以下操作:
rowObj.sort(函数(a,b){
设aStartDate=新日期(a[“计划开始日期”);
设b开始日期=新日期(b[“计划开始日期”);
if(aStartDate.getTime()>bStartDate.getTime()){
返回1;
}
if(astardate.getTime()
赋予排序的函数应返回-1、0或1。不是真的或假的。你的“日期”是一个“字符串”,所以你不是在比较日期,而是在比较字符串。所以你需要把你的字符串转换成日期对象,这也是错误的。看看OPs数组/对象中的日期,正如我在另一个答案中所说的,这也是错误的。
arr.sort(function(a,b){
   return new Date(b['Planned Start Date']) - new Date(a['Planned Start Date']);
});
Try this: 

rowObj.sort(function (a, b) {

   let aStartDate=new Date(a["Planned Start Date"]);
   let bStartDate=new Date(b["Planned Start Date"]);

   if (aStartDate.getTime() > bStartDate.getTime()) {
       return 1;
     }

   if (aStartDate.getTime() < bStartDate.getTime()) {
       return -1;
     }

    return 0;
});

console.log(rowObj);