我有一系列对象
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
的sort函数,但是仍然无法获得所需的输出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)
最佳答案
这有效(添加缺少的逗号后):
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) {
const [afrom, ato]=a.time.split(" to ");
const [bfrom, bto]=b.time.split(" to ");
return Date.parse(a.date + " " + afrom) - Date.parse(b.date + " "+ bfrom);
});
console.log(data)