arr = arr.sort(function (a, b) {
var dateA = new Date(a.date_prop).getTime();
var dateB = new Date(b.date_prop).getTime();
return dateA < dateB ? 1 : -1;
});
我刚刚采用了上面描述的schwartzian变换,并将其作为函数。这需要一段时间 array ,排序 function 和一个布尔值作为输入:
function schwartzianSort(array,f,asc){
for (var i=array.length;i;){
var o = array[--i];
array[i] = [].concat(f.call(o,o,i),o);
}
array.sort(function(a,b){
for (var i=0,len=a.length;i<len;++i){
if (a[i]!=b[i]) return a[i]<b[i]?asc?-1:1:1;
}
return 0;
});
for (var i=array.length;i;){
array[--i]=array[i][array[i].length-1];
}
return array;
}
function schwartzianSort(array, f, asc) {
for (var i = array.length; i;) {
var o = array[--i];
array[i] = [].concat(f.call(o, o, i), o);
}
array.sort(function(a, b) {
for (var i = 0, len = a.length; i < len; ++i) {
if (a[i] != b[i]) return a[i] < b[i] ? asc ? -1 : 1 : 1;
}
return 0;
});
for (var i = array.length; i;) {
array[--i] = array[i][array[i].length - 1];
}
return array;
}
arr = []
arr.push({
date: new Date(1494434112806)
})
arr.push({
date: new Date(1494434118181)
})
arr.push({
date: new Date(1494434127341)
})
console.log(JSON.stringify(arr));
arr = schwartzianSort(arr, function(o) {
return o.date
}, false)
console.log("DESC", JSON.stringify(arr));
arr = schwartzianSort(arr, function(o) {
return o.date
}, true)
console.log("ASC", JSON.stringify(arr));
//Sort by day, then month, then year
for(i=0;i<=2; i++){
dataCourses.sort(function(a, b){
a = a.lastAccessed.split("/");
b = b.lastAccessed.split("/");
return a[i]>b[i] ? -1 : a[i]<b[i] ? 1 : 0;
});
}
var isDescending = true; //set to false for ascending
console.log(["8/2/2020","8/1/2020","8/13/2020", "8/2/2020"].sort((a,b) => isDescending ? new Date(b).getTime() - new Date(a).getTime() : new Date(a).getTime() - new Date(b).getTime()));
myArray = [{transport: "Air",
load: "Vatican Vaticano",
created: "01/31/2020"},
{transport: "Air",
load: "Paris",
created: "01/30/2020"}]
myAarray.sort(function(a, b) {
var c = new Date(a.created);
var d = new Date(b.created);
return c-d;
});
20条答案
按热度按时间v7pvogib1#
我能够使用以下行实现排序:
nhjlsmyf2#
感谢上面那些精彩的回答。我想到了一个稍微复杂的答案。只针对那些想要比较不同答案的人。
6tdlim6h3#
带有日期的字符串在javascript中具有可比性(如果它们在语法上相同),例如:
这意味着您可以在自定义排序函数中使用此表达式:
huus2vyu4#
arr是一个对象数组,每个对象都有一个日期属性。你可以这样分类
ryhaxcpt5#
ut6juiuv6#
如果像我一样,你有一个数组,其日期格式如下
YYYY[-MM[-DD]]
如果您想在不太具体的日期之前预订更具体的日期,我提供了这个方便的功能:vhmi4jdf7#
我刚刚采用了上面描述的schwartzian变换,并将其作为函数。这需要一段时间
array
,排序function
和一个布尔值作为输入:de90aj5v8#
对于希望按日期(英国格式)排序的任何人,我使用了以下方法:
92vpleto9#
使用es6 arrow函数,您可以进一步只编写一行简明代码(不包括变量声明)。
如。:
由于上述日期不存在时间,Dead对象将考虑以下排序时间:
00:00:00
该代码可用于升序和降序排序。只需更改
isDescending
根据需要设置变量。g2ieeal710#
谢谢你,甘尼什·萨纳普。按日期字段从旧到新对项目进行排序。使用它
kuhbmx9i11#
ws51t4hk12#
我个人使用以下方法对日期进行排序。
6qfn3psc13#
我将在这里添加这一点,因为一些用户可能无法解决如何反转这种排序方法。
要按“上来”排序,我们可以简单地交换a&b,如下所示:
注意
a
现在在左手边,并且b
在右边,:d!f45qwnt814#
可以在下划线js中使用sortby。
http://underscorejs.org/#sortby
样本:
mwecs4sa15#
当您的日期采用这种格式(dd/mm/yyyy)时,应该这样做。
然后打电话
sortByDate(myArr);