这是我的数组的样子
[
{ name: "myname", date: dateObj, value: 2 },
{ name: "othername", date: dateObj, value: 3 },
{ name: "newname", date: dateObj, value: 5 },
]
日期是本地日期对象。
获取日期最早的一个对象的最聪明方法是什么?有没有比遍历整个数组更好的方法了?
答案 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];