Я новичок в DataWeave, и у меня около 20 строк.
Эти строки могут быть пустыми или иметь фактические значения.
Полезная нагрузка выглядит так:
{
str1 : "String 1",
str2 : "String 2",
str3 : "",
str4 : "String 4",
}
Я ищу наиболее эффективный способ поместить пустую строку между тегом <li> </li>
html и затем объединить эти строки.
Итак, результаты должны выглядеть так <li> String 1 </li><li> String 2 </li><li> String 4 </li>
Вот мое решение:
var str_arr = [
"String 1",
"String 2",
"",
"String 4",
]
---
concatenated_str: str_arr joinBy ""
Есть ли лучшее решение, чем это?
1 ответ
Я предполагаю, что вы используете Mule4.
Несколько способов сделать это. Первый способ ниже "повторяет" ваши данные три раза:
%dw 2.0
output application/json
var data = {
str1 : "String 1",
str2 : "String 2",
str3 : "",
str4 : "String 4",
}
---
"<li>" ++ ((data pluck $ filter not isEmpty($)) joinBy "</li><li>") ++ "</li>"
Этот второй способ повторяет ваши данные дважды, это будет более эффективное решение:
%dw 2.0
output application/json
var data = {
str1 : "String 1",
str2 : "String 2",
str3 : "",
str4 : "String 4",
}
---
data pluck $ reduce (e,acc="") -> acc ++ "<li>$(e)</li>" default ""
ПРИМЕЧАНИЕ. Я добавил полное решение вашей проблемы по сравнению с простым использованием созданного массива и последующим запуском joinBy
. Но да, если у вас есть коллекция, joinBy
будет неплохим решением.
ПРИМЕЧАНИЕ. Измените output
на все, что захотите, я подозреваю, что text/plain
- это то, что вам нужно. Я использовал application/dw
, потому что использовал предварительный просмотр для тестирования.
Похожие вопросы
Новые вопросы
dataweave
DataWeave Language - это мощный механизм шаблонов, который позволяет преобразовывать данные в любой формат (из XML, CSV, JSON, Pojos, Maps и т. Д.).