Javascript 如何对JS对象数组进行排序
我试图根据计划的开始对这个JavaScript对象数组进行排序 我尝试了以下方法: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[“计划开始日期”]
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);