从具有日期对象的对象数组中获取具有最早日期的最新对象

时间:2018-09-23 09:08:12

标签: javascript arrays

这是我的数组的样子

[
 { name: "myname", date: dateObj, value: 2 },
 { name: "othername", date: dateObj, value: 3 },
 { name: "newname", date: dateObj, value: 5 },
]

日期是本地日期对象。

获取日期最早的一个对象的最聪明方法是什么?有没有比遍历整个数组更好的方法了?

3 个答案:

答案 0 :(得分:4)

您可以使用Array.reduce()来迭代数组,并在每次迭代中选择日期最早的对象:

const data = [
 { name: "myname", date: new Date(2016, 5, 1), value: 2 },
 { name: "othername", date: new Date(2018, 6, 1), value: 3 },
 { name: "newname", date: new Date(2017, 12, 1), value: 5 },
];

const result = data.reduce((r, o) => o.date < r.date ? o : r);

console.log(result);

答案 1 :(得分:1)

是的。数组必须预先排序。 :)

换句话说,不是。不对整个Array进行迭代,似乎无法找到日期最旧的Object。我们需要迭代数组。

答案 2 :(得分:1)

如果我们将数组命名为myArray,这应该做您想做的事情:

myArray.sort((objA, objB) => objA.date.getTime() - objB.date.getTime())[0];