You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JSONata从JSON中获取值最高的前5个键值对

使用JSONata提取值最高的前5个键值对

场景说明

你的JSON数据是嵌套数组结构,且内部的键值对已按value降序排列,只需提取前5个元素即可得到值最高的条目。

核心表达式

由于数据已排序,直接通过数组切片获取前5个元素:

$[0][0..4]

或者使用$slice函数实现相同效果:

$slice($[0], 0, 5)

分步解释

  1. $[0]:定位到外层数组中的内层数组(你的数据外层是一个数组,里面仅包含一个存放键值对的数组)
  2. [0..4]:JSONata的数组切片语法,从索引0到索引4(包含两端),共5个元素;$slice(数组, 起始索引, 长度)函数则直接指定取前5个元素

验证示例

输入JSON(修正语法错误后)

[
  [
    {
      "key": "A",
      "value": 310
    },
    {
      "key": "B",
      "value": 240
    },
    {
      "key": "C",
      "value": 110
    },
    {
      "key": "D",
      "value": 90
    },
    {
      "key": "E",
      "value": 60
    },
    {
      "key": "F",
      "value": 50
    },
    {
      "key": "G",
      "value": 30
    },
    {
      "key": "H",
      "value": 10
    }
  ]
]

输出结果

[
  {
    "key": "A",
    "value": 310
  },
  {
    "key": "B",
    "value": 240
  },
  {
    "key": "C",
    "value": 110
  },
  {
    "key": "D",
    "value": 90
  },
  {
    "key": "E",
    "value": 60
  }
]

扩展:数据未排序的情况

如果原始数据未按value降序排列,需要先排序再取前5,表达式如下:

$sort($[0], function(a,b) { b.value - a.value })[0..4]
  • $sort(数组, 排序函数):按value从高到低排序,b.value - a.value实现降序逻辑
  • 后续切片步骤与前面一致

内容的提问来源于stack exchange,提问作者Imaginary-Pea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 07:45:12