查找所有字段的最高值和最低值 children
Finding highest and lowest value of field for all children
1)
我想从项目数组中提取具有最低值的 Id 和具有最高值的 Id。
2)
当我有 2 个 Id 时,我想将它们与静态值进行比较,例如'23'
3) (这是我的问题)
我考虑过将所有 Id 放入一个数组中,然后对数组进行排序,然后通过它们在数组中的索引提取最高值和最低值 [0] 用于最低 Id,[-1] 用于最高 Id。
4)
最后再做个对比,
(字段staticId为='23')
fun isIdBetween(lowestId, highestId, staticId) =
if(staticId >= lowestId and staticId <= highestId)
true
else
false
并将结果放入变量中,
var result = isIdBetween(lowestId, highestId, staticId)
XML 示例:
<?xml version="1.0" encoding="UTF-8"?>
<ns:Level1
xmlns:ns="aaaa:bbbb:cccc:dddd">
<Level2>
<Level3>
<Id>17</Id>
</Level3>
<Level3>
<Id>219</Id>
</Level3>
<Level3>
<Id>33</Id>
</Level3>
</Level2>
</ns:Level1>
您可以使用 min/max 函数来获取最小值和最大值。
你可以做一个简单的比较来找到范围,就像你建议的那样:
%dw 2.0
output application/json
var data = [17,219,33]
var static = 23
---
min(data) <= static and static <= max(data)
我不明白你的问题是什么你的解决方案对我来说没问题
%dw 2.0
output application/json
var ids = payload.Level1.Level2.*Level3.Id orderBy (idValue) -> idValue
fun isIdBetween(lowestId, highestId, staticId) =
if(staticId >= lowestId and staticId <= highestId)
true
else
false
var threshold = 23
---
isIdBetween(ids[0],ids[1], threshold)
点 selector 将 select 匹配该标签的第一个节点的值,多值 selector (.*) 将 select 值匹配该标签的所有节点。所以基本上 payload.Level1.Level2.*Level3.Id returns 一个包含所有 Id 值的数组。 http://docs.mulesoft.com/mule-runtime/4.2/dataweave-selectors。然后我只需要对它进行排序。
1)
我想从项目数组中提取具有最低值的 Id 和具有最高值的 Id。
2)
当我有 2 个 Id 时,我想将它们与静态值进行比较,例如'23'
3) (这是我的问题)
我考虑过将所有 Id 放入一个数组中,然后对数组进行排序,然后通过它们在数组中的索引提取最高值和最低值 [0] 用于最低 Id,[-1] 用于最高 Id。
4)
最后再做个对比,
(字段staticId为='23')
fun isIdBetween(lowestId, highestId, staticId) =
if(staticId >= lowestId and staticId <= highestId)
true
else
false
并将结果放入变量中,
var result = isIdBetween(lowestId, highestId, staticId)
XML 示例:
<?xml version="1.0" encoding="UTF-8"?>
<ns:Level1
xmlns:ns="aaaa:bbbb:cccc:dddd">
<Level2>
<Level3>
<Id>17</Id>
</Level3>
<Level3>
<Id>219</Id>
</Level3>
<Level3>
<Id>33</Id>
</Level3>
</Level2>
</ns:Level1>
您可以使用 min/max 函数来获取最小值和最大值。
你可以做一个简单的比较来找到范围,就像你建议的那样:
%dw 2.0
output application/json
var data = [17,219,33]
var static = 23
---
min(data) <= static and static <= max(data)
我不明白你的问题是什么你的解决方案对我来说没问题
%dw 2.0
output application/json
var ids = payload.Level1.Level2.*Level3.Id orderBy (idValue) -> idValue
fun isIdBetween(lowestId, highestId, staticId) =
if(staticId >= lowestId and staticId <= highestId)
true
else
false
var threshold = 23
---
isIdBetween(ids[0],ids[1], threshold)
点 selector 将 select 匹配该标签的第一个节点的值,多值 selector (.*) 将 select 值匹配该标签的所有节点。所以基本上 payload.Level1.Level2.*Level3.Id returns 一个包含所有 Id 值的数组。 http://docs.mulesoft.com/mule-runtime/4.2/dataweave-selectors。然后我只需要对它进行排序。