如果它们不为空,则连接许多字符串的最有效方法
Most efficient way to Concat Many String if they're not empty
我对 DataWeave 有点陌生,我有 20 个字符串。
这些字符串可能为空或具有实际值
有效载荷如下所示:
{
str1 : "String 1",
str2 : "String 2",
str3 : "",
str4 : "String 4",
}
我正在寻找最有效的方法来将 none 空字符串放在 <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 ""
还有比这个更好的解决方案吗?
我假设您使用的是 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
相比,我为您的问题添加了完整的解决方案。但是是的,如果你有 collection joinBy
将是一个很好的解决方案。
注意:将 output
更改为您想要的任何内容,我怀疑 text/plain
是您想要的。我使用 application/dw
因为我正在使用预览来测试。
我对 DataWeave 有点陌生,我有 20 个字符串。
这些字符串可能为空或具有实际值
有效载荷如下所示:
{
str1 : "String 1",
str2 : "String 2",
str3 : "",
str4 : "String 4",
}
我正在寻找最有效的方法来将 none 空字符串放在 <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 ""
还有比这个更好的解决方案吗?
我假设您使用的是 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
相比,我为您的问题添加了完整的解决方案。但是是的,如果你有 collection joinBy
将是一个很好的解决方案。
注意:将 output
更改为您想要的任何内容,我怀疑 text/plain
是您想要的。我使用 application/dw
因为我正在使用预览来测试。