javascript - 根据时间戳条件过滤数组中的唯一对象

标签 javascript arrays node.js ecmascript-6

我有以下数组:

let arr = [
    {"id": 123, "lastUpdate": 1543229793},
    {"id": 456, "lastUpdate": 1545269320},
    {"id": 123, "lastUpdate": 1552184795}
]

我需要根据相同的 ID 过滤数组,还要检查“lastUpdate”时间戳并只保留较新的条目。结果应该是:

[
    {"id": 456, "lastUpdate": 1545269320},
    {"id": 123, "lastUpdate": 1552184795}
]

我尝试了以下方法:

arr = arr.filter((e, index, self) =>
    index === self.findIndex((t) => (
        t.id === intent.id && t.lastUpdate > e.lastUpdate
    ))
)

但是,这为我过滤了所有内容,结果数组为空。我认为上面 && t.lastUpdate > e.lastUpdate 的最后一部分有问题。

非常感谢任何提示!

最佳答案

你好,如果你正在寻找一个高性能的解决方案,你可以使用一个对象:)

let arr = [{"id": 123,"lastUpdate": 1543229793},
{"id": 456,"lastUpdate": 1545269320},
{"id": 123, "lastUpdate": 1552184795}];

let newArr = {}
arr.forEach(el => {
  if(!newArr[el.id] || newArr[el.id].lastUpdate < el.lastUpdate){
      newArr[el.id] = el
  }
})

console.log(Object.values(newArr));

关于javascript - 根据时间戳条件过滤数组中的唯一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54366771/

相关文章:

javascript - querySelector 到带有函数参数的 addEventListener

php - 使用 Javascript 从多选列表中选择值

java - 使用 int[] 填充 JComboBox

python - 如何获取包含 np.NAN 的二维数组在特定百分位数范围内的位置

node.js - redis expireAt 在服务器中没有过期

node.js - 在 heroku 上部署 node.js 应用程序成功但不起作用

javascript - 自动发布html

javascript - 如何向 ipc 渲染器发送添加回调

python - 移动 Numpy 数组的最快方法

找不到 Node.js 原生插件模块 (tfjs_binding.node)