根据javascript中的日期字段删除重复元素

史蒂夫

我想要一个函数,它接受一个数组并过滤掉旧的重复项。

具体来说,如果 myList 中存在重复的 id,则仅保留具有最新日期的对象。给定以下数组

let myList = [{
    id: "e9519e95-5a10-4274-ac24-de72ad60ffd7",
    date: "2018-02-21 21:04:13"
},
{
    id: "026e7ecf-d236-4aff-b26d-7546ac85b7d5",
    date: "2018-02-22 21:04:13"
},
{
    id: "e9519e95-5a10-4274-ac24-de72ad60ffd7",
    date: "2018-02-23 21:04:13"
}]

该函数应该返回:

[{
    id: "026e7ecf-d236-4aff-b26d-7546ac85b7d5",
    date: "2018-02-22 21:04:13"
},
{
    id: "e9519e95-5a10-4274-ac24-de72ad60ffd7",
    date: "2018-02-23 21:04:13"
}]

您可以使用该函数reduce来构建所需的输出。

let myList = [{    id: "e9519e95-5a10-4274-ac24-de72ad60ffd7",    date: "2018-02-21 21:04:13"},{    id: "026e7ecf-d236-4aff-b26d-7546ac85b7d5",    date: "2018-02-22 21:04:13"},{    id: "e9519e95-5a10-4274-ac24-de72ad60ffd7",    date: "2018-02-23 21:04:13"}];

let result = Object.values(myList.reduce((a, {id, date}) => {
  if (a[id]) {
    if (a[id].date < date) a[id] = {id, date};
  } else a[id] = {id, date};
  
  return a;
}, {}));

console.log(result);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章