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

Hel*_*lmi 2 javascript arrays

这是我的数组的样子

[
 { name: "myname", date: dateObj, value: 2 },
 { name: "othername", date: dateObj, value: 3 },
 { name: "newname", date: dateObj, value: 5 },
]
Run Code Online (Sandbox Code Playgroud)

日期是本机日期对象。

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

Ori*_*ori 5

您可以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);
Run Code Online (Sandbox Code Playgroud)


Bha*_*han 1

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

换句话说,不。如果不迭代整个数组,似乎没有办法找到日期最旧的对象。我们需要迭代数组。