JQuery使用日期对对象数组进行排序[重复]
Posted
技术标签:
【中文标题】JQuery使用日期对对象数组进行排序[重复]【英文标题】:JQuery Sorting array of object using date [duplicate] 【发布时间】:2020-05-05 01:47:20 【问题描述】:我有一个对象数组,其中每个对象都包含 lastModifiedDate 属性。 我想根据 lastModifiedDate 属性按升序和降序对对象数组进行排序。如果日期相同,则应根据日期的时间进行排序。
var completeData = [name: 'xyz', lastModifiedDate: 1579329711458, name: 'abc', lastModifiedDate: 1579339014519]
我已尝试使用以下代码对上述数组进行排序。
升序:
completeData.sort(function(a, b)
return new Date( a.lastModifiedDate ) < new Date( b.lastModifiedDate );
);
降序:
completeData.sort(function(a, b)
return new Date( a.lastModifiedDate ) > new Date( b.lastModifiedDate );
);
【问题讨论】:
升序和降序排序的代码示例看起来相同。 我错过了更改更大和更少的符号 无需将lastModifiedDate
转换为Date
。
【参考方案1】:
如果lastModifiedDate
是时间戳的数字值,那么为什么需要比较这些时间戳的日期对象,您可以比较这些数字,以便有效地执行如下排序。
completeData.sort(function(a, b)
return a.lastModifiedDate - b.lastModifiedDate;
);
当您需要显示日期格式时,您可以使用 Date 对象进行演示。
【讨论】:
@Tales 请检查 jsfiddle jsfiddle.net/t3m2bcgL 它工作正常。如果你想按降序排列,那么你必须使用return b.lastModifiedDate - a.lastModifiedDate;
谢谢。它的工作【参考方案2】:
对于降序,
completeData.sort(function(a, b)
var nameA= a.lastModifiedDate, nameB=b.lastModifiedDate
if (nameA < nameB)
return 1
if (nameA > nameB)
return -1
return 0 //default return value (no sorting)
);
对于升序,
completeData.sort(function(a, b)
var nameA= a.lastModifiedDate, nameB=b.lastModifiedDate
if (nameA < nameB)
return -1
if (nameA > nameB)
return 1
return 0 //default return value (no sorting)
);
这是日期。
【讨论】:
代码正在运行。谢谢。 你能接受答案吗? ? @故事 我接受了上面的代码,因为它更短【参考方案3】:var completeData = [
name: 'xyz',
lastModifiedDate: 1579329711458
,
name: 'abc',
lastModifiedDate: 1579339014519
];
var result = completeData.sort(function (a, b)
return b.lastModifiedDate - a.lastModifiedDate;
)
console.log(result);
【讨论】:
以上是关于JQuery使用日期对对象数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章