gpt4 book ai didi

javascript - 在 JSON 对象数组中搜索最大值

转载 作者:行者123 更新时间:2023-12-01 03:52:12 25 4
gpt4 key购买 nike

我有一个 JSON 对象数组,如下例所示:

    [ { _id: 58d98fc46cb2342d6848ae3,
updateNumber: '1',
resolution: 'tbd',
nextUpdate: Mon Mar 27 2017 17:06:00 GMT-0400 (EDT),
update: 'update 1',
subject: 'test1',
impact: 'test1',
incidentNumber: '12345',
wasNew: true,
__v: 0 },
{ _id: 58d880126fb5087d684c8de4,
updateNumber: '2',
resolution: 'tbd',
nextUpdate: Mon Mar 27 2017 18:06:00 GMT-0400 (EDT),
update: 'update 2',
subject: 'test1',
impact: 'test1',
incidentNumber: '12345',
wasNew: true,
__v: 0 },
{ _id: 58c23ae21bt2743d6328ae3,
updateNumber: '1',
resolution: 'tbd',
nextUpdate: Mon Mar 27 2017 17:06:00 GMT-0400 (EDT),
update: 'update 1',
subject: 'test2',
impact: 'test2',
incidentNumber: '23456',
wasNew: true,
__v: 0 } ]

我需要做的是针对每个事件编号,获取最新更新。每个事件编号将有多个更新,我希望能够检索最新的更新(在上面的示例中,事件编号 12345 的更新 2 和事件编号 23456 的更新 1)

到目前为止,我已经尝试过 _.max 的变体,它仅适用于一个事件编号,不适用于多个事件编号。

我进行了广泛的搜索,到目前为止还没有发现任何涉及我所拥有的相同数据集的问题。

有人能指出我如何开始解决这个问题的正确方向吗?

谢谢

最佳答案

为此,您可以首先选择具有所需 incidentNumber 的项目,然后从这些项目中获取具有最大 updateNumber 的项目。在 es6 语法中,它看起来像这样,假设您的数据位于 data 变量中

data
.filter(d => d.incidentNumber === '12345')
.reduce((o, e) => o.updateNumber && o.updateNumber > e.updateNumber ? o : e, {})

在 es5 语法中,它有点冗长

data
.filter(function(d) { return d.incidentNumber === '12345'; })
.reduce(function(o, e) { return o.updateNumber && o.updateNumber > e.updateNumber ? o : e}, {})

或者您可以进行过滤并一次获得最大值

data.reduce(function(o, e) { return (e.incidentNumber === '12345' &&  o.updateNumber && o.updateNumber > e.updateNumber) ? o : e}, {})

要获取每个唯一事件编号的最大 updateNumber 的对象,您可以在减少时维护按事件编号索引的对象的哈希

var results = data.reduce(function (m, e) {
if (e.updateNumber && (!m[e.incidentNumber] || m[e.incidentNumber].updateNumber < e.updateNumber)) {
m[e.incidentNumber] = e;
}
return m;
}, {});

Object.values(results); // will contain the array of objects with max updateNumber

关于javascript - 在 JSON 对象数组中搜索最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43081053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com