javascript - 根据一个属性和日期对象的值对数组进行排序,以使用 JavaScript 获取最近的条目

标签 javascript arrays sorting datetime

我需要从多个条目中获取最近的条目。

let items = [{Fruit: "Apple",date: 1592809121000},
{Fruit: "Orange",date: 1592564167000},
{Fruit: "Apple",date: 1592566351000},
{Fruit: "Orange",date: 1592809121000},
{Fruit: "Apple",date: 1592564167000},
{Fruit: "Apple",date: 1593153998000},
{Fruit: "Orange",date: 1592893249000},
{Fruit: "Grapes",date: 1592565214000}]

预期输出:

let items = [{
  Fruit: "Apple",
  date: recent entry
}, {
  Fruit: "Orange",
  date: recent entry
}, {
  Fruit: "Grapes",
  date: recent entry
}]

尝试用代码对日期进行排序,但它是在所有水果中排序,但我只想在特定水果中进行排序,以获取带有时间戳的最新条目并从数组中删除其他条目

// Sort by date and show recent first
items = items.sort(function(a, b) { 
  return (new Date(b.date))- (new Date(a.date));
});

最佳答案

您可以减少数组并只取每种水果中较大的日期。

let array = [{ Fruit: "Apple", date: 1592809121000 }, { Fruit: "Orange", date: 1592564167000 }, { Fruit: "Apple", date: 1592566351000 }, { Fruit: "Orange", date: 1592809121000 }, { Fruit: "Apple",  date: 1592564167000 }, { Fruit: "Apple", date: 1593153998000 }, { Fruit: "Orange", date: 1592893249000 }, { Fruit: "Grapes", date: 1592565214000 }],
    result = Object.values(array.reduce((r, o) => {
        if (!r[o.Fruit] || r[o.Fruit].date < o.date) r[o.Fruit] = o;
        return r;
    }, {}));

console.log(result);

关于javascript - 根据一个属性和日期对象的值对数组进行排序,以使用 JavaScript 获取最近的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62692108/

相关文章:

javascript - 在全日历中禁用外部事件的突出显示

javascript - 从 JSON 数据中仅获取对象的一部分

java - 将数组分成 3 个 block 并将它们放入数组的数组中?

ios - 使用 1 NSFetchedResultsController 具有不同顺序的多个部分

python - 如何在 Python 中对 dict 中的列表进行排序?

javascript - 将自动播放功能添加到简单的 jQuery slider

javascript - 将字符串数组转换为整数数组

使用 qsort 对 C 数组进行排序?

arrays - 如何使用 .fill 方法创建新对象?

php - 不区分大小写的排序数组