【发布时间】:2018-01-30 10:02:19
【问题描述】:
我有一个对象数组
var data =[
{
"avail": "3 Bookings Available"
"time": "05:00 PM to 06:00 PM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "09:00 AM to 10:00 AM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "04:00 PM to 05:00 PM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "03:00 PM to 04:00 PM",
"date": "2018-01-30"
}];
我想按时间字符串值对数据进行排序,这样需要的输出如下所示:
[{
"avail": "3 Bookings Available"
"time": "09:00 AM to 10:00 AM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "03:00 PM to 04:00 PM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "04:00 PM to 05:00 PM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "05:00 PM to 06:00 PM",
"date": "2018-01-30"
}]
我已经使用了 String #localeCompare 的排序函数,但我仍然没有得到所需的输出
data.sort(function(a,b){
return a.time.localeCompare(b.time);
});
console.log(data);
即使我使用了String#slice() 方法,通过该方法我可以使用 '1970/01/01' 作为任意日期来生成有效的日期字符串,但我仍然可以得到所需的输出任何人都可以给我以这种方式获得输出的方式提前谢谢。
data.sort(function(a, b) {
return Date.parse('1970/01/01 ' + a.time.slice(0, -2) + ' ' + a.time.slice(-2)) - Date.parse('1970/01/01 ' + b.time.slice(0, -2) + ' ' + b.time.slice(-2))
});
例子:
var data = [{
"avail": "3 Bookings Available",
"time": "05:00 PM to 06:00 PM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "09:00 AM to 10:00 AM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "04:00 PM to 05:00 PM",
"date": "2018-01-30"
},
{
"avail": "3 Bookings Available",
"time": "03:00 PM to 04:00 PM",
"date": "2018-01-30"
}
];
data.sort(function(a, b) {
return Date.parse('1970/01/01 ' + a.time.slice(0, -2) + ' ' + a.time.slice(-2)) - Date.parse('1970/01/01 ' + b.time.slice(0, -2) + ' ' + b.time.slice(-2))
});
console.log(data)
【问题讨论】:
-
我认为您无法控制服务器响应?如果你这样做了,你可以发回 ISO8601 格式,该格式可用于轻松构造Date with a dateString,即
new Date("2018-01-30T12:34:56")
标签: javascript arrays string sorting time