使用 JSONata 除值

问题描述 投票:0回答:1

JSONata 说实话让我抓狂。几周前我问过类似的问题,但我仍然不知道我在做什么,所以我又来了。

我正在做什么:

[[  {
    "time": "2024-04-26",
    "value": 40
  },
  {
    "time": "2024-04-27",
    "value": 10
  },
  {
    "time": "2024-04-28",
    "value": 20
  }
],
[  {
    "time": "2024-04-26",
    "value_2": 5
  },
  {
    "time": "2024-04-27",
    "value_2": 2
  },
  {
    "time": "2024-04-28",
    "value_2": 4
  }
]]

我想要的是获取

time
的不同值并除以这些值 -
value/value_2
:

[  {
    "time": "2024-04-26",
    "value": 8
  },
  {
    "time": "2024-04-27",
    "value": 5
  },
  {
    "time": "2024-04-28",
    "value": 5
  }
]

我尝试了类似的方法,但我只得到了

time
的不同值。

$type($) = 'array' ? 
(($count($) ) > 0 ? 
$map($[0], function($v, $i, $a) 
{ { "time": $v.time, 
"value": $v.value/ $v.value_2 } })[]: []): undefined 

输出:

[
  {
    "time": "2024-04-26"
  },
  {
    "time": "2024-04-27"
  },
  {
    "time": "2024-04-28"
  }
]
arrays json distinct distinct-values jsonata
1个回答
0
投票

您可以使用带有以下表达式的 JSONata 来实现所需的结果:

$zip($[0].time, $[0].value / $[1].value_2).{
  "time": $[0],
  "value": $[1]
}
© www.soinside.com 2019 - 2024. All rights reserved.