在我的node.js应用程序中,我有以下对象数组,其中包括一个名为REPORTEDDATE的日期字段:
[ { INCIDENTNUMBER: 'INC000000000002',
SUBMITTER: 'Chris',
REPORTEDDATE: Mon May 09 2016 18:17:04 GMT+0000 (UTC),
LASTRESOLVEDDATE: Mon May 09 2016 18:17:04 GMT+0000 (UTC),
OWNERGROUP: 'ACME Help Desk',
COMPANY: 'ACME Inc',
CATEGORIZATIONTIER1: 'cat-1',
CATEGORIZATIONTIER2: 'cat-2',
CATEGORIZATIONTIER3: 'cat-3',
RESOLUTIONCATEGORY: 'res-cat',
RESOLUTIONCATEGORYTIER2: 'res-cat-2',
RESOLUTIONCATEGORYTIER3: 'res-cat-3',
REPORTEDSOURCE: 'Phone',
DESCRIPTION: 'Some description',
ID: 9 },
{ INCIDENTNUMBER: 'INC000000000002',
SUBMITTER: 'Chris',
REPORTEDDATE: Mon May 09 2016 18:17:09 GMT+0000 (UTC),
LASTRESOLVEDDATE: Mon May 09 2016 18:17:09 GMT+0000 (UTC),
OWNERGROUP: 'ACME Help Desk',
COMPANY: 'ACME Inc',
CATEGORIZATIONTIER1: 'cat-1',
CATEGORIZATIONTIER2: 'cat-2',
CATEGORIZATIONTIER3: 'cat-3',
RESOLUTIONCATEGORY: 'res-cat',
RESOLUTIONCATEGORYTIER2: 'res-cat-2',
RESOLUTIONCATEGORYTIER3: 'res-cat-3',
REPORTEDSOURCE: 'Phone',
DESCRIPTION: 'Some description',
ID: 10 } ]是否有方法确定这些对象的REPORTEDDATE字段的最大日期?我知道-更好的方式是描述我试过的东西,但是,用这种格式,我真的不知道从哪里开始.
发布于 2016-05-09 23:38:48
您可以很简单地使用map、reduce、Math.max和Date.parse()来完成它。
var maxDate = new Date(arr.map(o => Date.parse(o.REPORTEDDATE))
.reduce((a, b) => Math.max(a, b)))
.toUTCString();发布于 2016-05-09 23:38:58
假设REPORTEDDATE是一个实际的Date实例,而不是字符串,则使用减缩操作
let maxDate = new Date(arrayOfObjects.reduce(
(currentMaxDate, obj) => Math.max(currentMaxDate, obj.REPORTEDDATE), 0));注意,Math.max()通过Date.prototype.valueOf()将日期视为数字,后者返回日期的时间戳。这就是为什么减少操作的输出被包装在new Date()中的原因。
发布于 2016-05-09 23:43:17
您可能可以使用Date类将字符串中的日期解析为可以在循环中进行比较的内容,以找到最大值,如:
var timestamp = new Date(array[0].REPORTEDDATE).getTime();
根据系统上date类的实现,您可能会发现需要使用字符串来使其正确解析,或者失败,您可能需要使用外部库或编写代码来获取日期、月、分钟、小时、秒等,并从中构造日期对象。
https://stackoverflow.com/questions/37127003
复制相似问题