【发布时间】:2020-06-26 02:57:37
【问题描述】:
我知道有很多 DataWeave 函数可以完成这项工作。但是想找点东西给我用。
比较两个 JSON 对象数组并返回索引。
这里是payload1:[ { "a": 1 }, { "a": 2 }, { "a": 3 } ]和payload2:[{"a":2}]
所以我希望看到有效载荷1 的索引=1 的结果。有什么想法吗?
【问题讨论】:
我知道有很多 DataWeave 函数可以完成这项工作。但是想找点东西给我用。
比较两个 JSON 对象数组并返回索引。
这里是payload1:[ { "a": 1 }, { "a": 2 }, { "a": 3 } ]和payload2:[{"a":2}]
所以我希望看到有效载荷1 的索引=1 的结果。有什么想法吗?
【问题讨论】:
您可以使用的一些函数是find 或dw::core::Arrays::indexOf。
这满足您的初始要求:
import indexOf from dw::core::Arrays
var payload1 = [ { "a": 1 }, { "a": 2 }, { "a": 3 } ]
var payload2 = [ {"a":2} ]
---
"index=" ++ (payload1 indexOf payload2[0]) ++ " of payload1"
这是一个更复杂的场景,使用find 获取多个元素的多个索引:
var payload1 = [ { "a": 1 }, { "a": 2 }, { "a": 3 } , { "a": 2 }]
var payload2 = [{ "a": 2 }, { "a": 3 }, { "a": 5 } ]
---
{ items:
payload2 reduce ((item, indexes = []) ->
do {
var itemIndexes = payload1 find item
---
if(isEmpty(itemIndexes))
indexes
else
indexes+ ( {
item: item,
indexes: (payload1 find item)
})
}
)
}
输出如下:
{ "items": [
{
"item": { "a": 2 },
"indexes": [ 1, 3 ]
},{
"item": { "a": 3 },
"indexes": [ 2 ]
}
]}
【讨论】: