как проверить, присутствует ли какой-либо один элемент строкового массива переменной длины в другом строковом массиве переменной длины

#dataweave #mule4

#dataweave #mule4

Вопрос:

 inputArray = ["cat", "bat", "mat"]  
configuredArray = ["dog", "elephant", "fox", "cat"]
 

inputArray и configuredArray являются строковыми массивами переменной длины.

Если какой-либо один элемент inputArray присутствует в configuredArray , я хотел бы установить флаг bloolean. Как мне его записать Dataweave 2.0 ? Заранее спасибо.

Ответ №1:

Вы могли filter бы использовать функции contains и и сделать что-то вроде этого. Также оставляет вас с функцией повторного использования.

 %dw 2.0
output application/json

fun any(left: Array, right: Array) =
    sizeOf(left filter (right contains $)) > 0

---
["cat", "bat", "mat"] any ["dog", "elephant", "fox", "cat"]
 

Комментарии:

1. дополнительная точка для использования двоичной функции в качестве оператора.

2. Отличное и краткое решение

3. Имейте в виду, что этот метод не имеет логики короткого замыкания, поэтому для особенно больших полезных нагрузок это не будет самым быстрым.

Ответ №2:

 %dw 2.0
output application/json
var arr1 = ["cat", "bat", "mat"]
var arr2 = ["dog", "elephant", "fox", "cat"]

---
sizeOf(arr1 reduce (item, acc = []) -> if (arr2 contains item) acc   item else acc) >0