我有一个javascript对象数组,它不会按日期排序
我对编程有点陌生,我很难理解为什么我的排序函数不会按日期排序我有一个javascript对象数组,它不会按日期排序,javascript,Javascript,我对编程有点陌生,我很难理解为什么我的排序函数不会按日期排序 var customer_orders = [ { order_number: 1, customer: 'Jess Learmonth', total_cost: 200, processed_date: '23/01/2
var customer_orders = [
{
order_number: 1,
customer: 'Jess Learmonth',
total_cost: 200,
processed_date: '23/01/2016'
},
{
order_number: 14,
customer: 'Adam Bowden',
total_cost: 100,
processed_date: '22/01/2015'
}
];
customer_orders.sort(function(a, b) {
var dateA = new Date(a.processed_date), dateB = new Date(b.processed_date);
return dateA - dateB;
});
它没有排序,因为您的日期格式没有重新确认。您可以尝试以下操作:
var客户订单=[{订单号:1,客户:'Jess Learmonth',总成本:200,处理日期:'23/01/2016'},{订单号:14,客户:'Adam Bowden',总成本:100,处理日期:'22/01/2015'}];
客户订单.sort((a,b)=>a.processed_date.split('/').reverse().join('').localeCompare(b.processed_date.split('/').reverse().join('');
控制台日志(客户订单)代码>由于您的日期格式不是按日期识别的格式,您可以这样进行转换
var customer_orders = [{
order_number: 1,
customer: 'Jess Learmonth',
total_cost: 200,
processed_date: '23/01/2016'
},
{
order_number: 14,
customer: 'Adam Bowden',
total_cost: 100,
processed_date: '22/01/2015'
}
];
function reformatDate(dateString) {
var dateParts = dateString.split("/");
return new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
}
customer_orders.sort(function(a, b) {
return new Date(reformatDate(a.processed_date)) - new Date(reformatDate(b.processed_date));
});
console.log(customer_orders);
您应该使用momentjs
解析日期,并比较它们进行排序-
var客户订单=[{
订单号:1,
顾客:“Jess LearnMonth”,
总成本:200,
处理日期:2016年1月23日
},
{
订单号:14,
顾客:“亚当·鲍登”,
总成本:100,
处理日期:2015年1月22日
}
];
设ans=customer\u orders.sort(函数a,b){
var dateA=时刻(a.处理日期,“DD/MM/YYYY”),
日期b=时刻(b.处理日期,“DD/MM/YYYY”);
返回日期a-日期b;
});
控制台日志(ans)代码>
'22/01/2015'
不是日期构造函数识别的日期格式<代码>2015-01-22(ISO标准)。可能与