JSONata技术需求:按grouping分组,取每组created降序首条数据
JSONata 分组排序并保留每组最新数据
原始数据
[ { "id": "a1", "grouping": "A", "text": "Lorum ipsum", "created": "2023-01-01T13:42" }, { "id": "a2", "grouping": "A", "text": "Epsom minor", "created": "2023-02-01T20:02" }, { "id": "a3", "grouping": "B", "text": "Ipsum Lorum", "created": "2023-01-01T13:42" } ]
需求
按grouping字段分组,每组内按created字段降序排序,仅保留每组的第一条数据。
解决方案
使用以下JSONata表达式:
$map($group($, grouping), function($group) { $sort($group, function($a, $b) { $b.created > $a.created })[0] })
表达式解释
$group($, grouping):将原始数组按grouping字段分组,生成以分组值为键、对应组数据为值的对象。$map(..., function($group) { ... }):遍历每个分组,对每组数据进行处理。$sort($group, function($a, $b) { $b.created > $a.created }):将当前分组内的元素按created字段降序排序(通过比较$b.created和$a.created实现倒序)。[0]:取排序后数组的第一个元素,即每组中created最新的数据。
执行结果
[ { "id": "a2", "grouping": "A", "text": "Epsom minor", "created": "2023-02-01T20:02" }, { "id": "a3", "grouping": "B", "text": "Ipsum Lorum", "created": "2023-01-01T13:42" } ]
内容的提问来源于stack exchange,提问作者Stuart Marsh
相关产品推荐
相关产品推荐

