Требуется эффективное решение для замены значений в массиве 1 (основной список) на значения из массива 2. Текущий код работает в Dataweave.Но я не думаю, что это оптимальное решение, когда два списка содержат больше значений.Предложите оптимальное решение для обновления Array 1 со значениями из Array 2. Я использую Mule 3.8.5.Мне нужно решение, чтобы мне нужно было повторять только один раз во втором списке и заменять все значения в основном списке.В настоящее время условие фильтра используется дважды в образце.Но в реальном сценарии мне нужно заменить 8 таких значений.
%dw 1.0
%output application/java
%var arr1 =[
{
"leadId": 127,
"playerId": 334353,
"name": "Joseph",
"activity": "10/03/2015"
},
{
"leadId": 128,
"playerId": 334354,
"name": "Sam",
"activity": "10/03/2017"
},
{
"leadId": 124,
"playerId": "",
"name": "",
"activity": "10/03/2015"
},
{
"leadId": 123,
"playerId": "",
"name": "",
"activity": "10/03/2015"
}
]
%var arr2 = [
{
"playerId": 123456,
"name": "James",
"leadId": 124
},
{
"playerId": 7890,
"name": "Jacob",
"leadId": 123
}
]
---
arr1 map ((actData) -> {
"leadId":actData.leadId,
"playerId": (arr2 filter ($.leadId == actData.leadId))[0].playerId default actData.playerId,
"name": (arr2 filter ($.leadId == actData.leadId))[0].name default actData.name,
"activity": actData.activity
})
Приведенный выше код дает ожидаемый результат.Но это очень медленно, когда значения списка больше.