我想用数组排序数组,其中每对中的第一项是日期,第二项是整数。我想在日期上对它进行排序,但我仍然坚持如何做到这一点。
示例数组
var dataTable = [[Fri Jun 13 2014 17:44:25 GMT+0200 (W. Europe Daylight Time),4],[Tue May 27 2014 06:56:06 GMT+0200 (W. Europe Daylight Time),4]]
dataTable.sort(function(a,b) { return a[0]<b[0]});//How to sort the arraylist on the dates.
提前致谢。
答案 0 :(得分:2)
您需要一个小函数将日期字符串转换为Date对象:
// Create a Date object from a date string in the format Tue May 27 2014 06:56:06
function parseDate(d) {
var months = {jan:0,feb:1,mar:2,apr:3,may:4,jun:5,
jul:6,aug:7,sep:8,oct:9,nov:10,dec:11};
var b = d.split(/[ :]/);
return new Date(b[3], months[b[1].toLowerCase()], b[2], b[4], b[5], b[6]);
}
然后你可以在sort函数中使用日期对象:
var dataTable = [
['Fri Jun 13 2014 17:44:25 GMT+0200 (W. Europe Daylight Time)',4],
['Tue May 27 2014 06:56:06 GMT+0200 (W. Europe Daylight Time)',4]
];
dataTable.sort(function(a, b){
return parseDate(a[0]) - parseDate(b[0])
});
请注意,将Date函数作为带有字符串参数的构造函数(请参阅ECMAScript §15.9.3.2)调用与调用 Date.parse 相同,并且日期字符串的解析在很大程度上取决于实现,即使在支持它的浏览器中使用格式specified in ECMA-262也不可靠。
答案 1 :(得分:0)
这应该有效
var dataTable = [
["Fri Jun 13 2014 17: 44: 25 GMT + 0200(W.Europe Daylight Time)", 4],
["Tue May 27 2014 06: 56: 06 GMT + 0200(W.Europe Daylight Time)", 4],
["Fri August 13 2014 17: 44: 25 GMT + 0200(W.Europe Daylight Time)", 4],
["Tue October 27 2014 06: 56: 06 GMT + 0200(W.Europe Daylight Time)", 4],
["Tue February 27 2014 06: 56: 06 GMT + 0200(W.Europe Daylight Time)", 4]
];
dataTable.sort(function (a, b) {
return new Date(a[0]).getTime() - new Date(b[0]).getTime();
});
console.log(dataTable);