如何在JSONata中获取数组中元素的索引
How to get index of element in array in JSONata
JSONata 提供了几个函数来操作数组内容。但是,我不知道如何 return 找到的元素的索引(类似于 JavaScript 中的 Array.indexOf 函数)。我正在寻找类似的东西:
$indexOf(Account.Order[OrderID="order103"])
or
Account.Order.indexOf(OrderID="order103")
or
Account.Order[OrderID="order103"].index
您可以合并地图的索引:
Account.Order ~> $map(function($v, $i) {
$merge([{'Index': $i}, $v])
})~>function($x){$x[OrderID="order103"].Index}
试试这个:
Account.Order ~> $map(function($v, $i) { $v.OrderID = 'order103' ? $i })
如果未找到,建议的解决方案均无法确保有效响应,但添加额外测试似乎符合我的预期:
($x:=Account.Order ~> $map(function($v, $i) { $v.OrderID = 'order101' ? $i });
$exists($x)?$x:-1)
将return-1
($x:=Account.Order ~> $map(function($v, $i) { $v.OrderID = 'order103' ? $i });
$exists($x)?$x:-1)
将return0
($x:=Account.Order ~> $map(function($v, $i) { $v.OrderID = 'order104' ? $i });
$exists($x)?$x:-1)
将 return 1
JSONata 提供了几个函数来操作数组内容。但是,我不知道如何 return 找到的元素的索引(类似于 JavaScript 中的 Array.indexOf 函数)。我正在寻找类似的东西:
$indexOf(Account.Order[OrderID="order103"])
or
Account.Order.indexOf(OrderID="order103")
or
Account.Order[OrderID="order103"].index
您可以合并地图的索引:
Account.Order ~> $map(function($v, $i) {
$merge([{'Index': $i}, $v])
})~>function($x){$x[OrderID="order103"].Index}
试试这个:
Account.Order ~> $map(function($v, $i) { $v.OrderID = 'order103' ? $i })
如果未找到,建议的解决方案均无法确保有效响应,但添加额外测试似乎符合我的预期:
($x:=Account.Order ~> $map(function($v, $i) { $v.OrderID = 'order101' ? $i });
$exists($x)?$x:-1)
将return-1
($x:=Account.Order ~> $map(function($v, $i) { $v.OrderID = 'order103' ? $i });
$exists($x)?$x:-1)
将return0
($x:=Account.Order ~> $map(function($v, $i) { $v.OrderID = 'order104' ? $i });
$exists($x)?$x:-1)
将 return 1