如何在 Dataweave 中识别数组中的最后一个元素
How to Identify last element in an Array in Dataweave
我有一个数据编织表达式来创建自定义字符串,但我不想附加 ||到输入数组的最后一个元素。我怎样才能实现它?
%dw 2.0
output application/json
var arr = ["ABC","XYZ"]
---
arr map((item,index) -> {
index: "custom ('" ++ item ++ "'); " ++ "||"
})
这会有帮助吗?
脚本
%dw 2.0
output application/json
var arr = ["ABC","XYZ"]
---
arr map((item,index) -> {
index: if((index) < (sizeOf(arr)-1)) "custom ('" ++ item ++ "'); " ++ "||" else item
})
输出
[
{
"index": "custom ('ABC'); ||"
},
{
"index": "XYZ"
}
]
您也可以尝试以下方法:
%dw 2.0
output application/json
import * from dw::core::Arrays
var arr = ["ABC","XYZ"]
---
take(arr,(sizeOf(arr)-1)) map (
$ ++ "||" // do your manipulation to modify the custom entry
)
take
已记录 here
出于好奇,你是不是将这个结果数组连接成一个字符串?您的问题似乎表明该函数的最终目标是返回一个字符串。如果你是,你可以 map
然后 joinBy
%dw 2.0
output application/json
var arr = ["ABC","XYZ", "DKJL"]
---
arr map "custom($($));" joinBy " || "
产出
"custom(ABC); || custom(XYZ); || custom(DKJL);"
如果像 Salim 的回答一样,您不应该在自定义中包装最后一个值,您还可以利用 reduce 的默认行为:
%dw 2.0
output application/json
var arr = ["ABC","XYZ", "DKJL"]
---
arr[-1 to 0] reduce ("custom($($)); || " ++ $$)
产出
"custom(ABC); || custom(XYZ); || DKJL"
我有一个数据编织表达式来创建自定义字符串,但我不想附加 ||到输入数组的最后一个元素。我怎样才能实现它?
%dw 2.0
output application/json
var arr = ["ABC","XYZ"]
---
arr map((item,index) -> {
index: "custom ('" ++ item ++ "'); " ++ "||"
})
这会有帮助吗?
脚本
%dw 2.0
output application/json
var arr = ["ABC","XYZ"]
---
arr map((item,index) -> {
index: if((index) < (sizeOf(arr)-1)) "custom ('" ++ item ++ "'); " ++ "||" else item
})
输出
[
{
"index": "custom ('ABC'); ||"
},
{
"index": "XYZ"
}
]
您也可以尝试以下方法:
%dw 2.0
output application/json
import * from dw::core::Arrays
var arr = ["ABC","XYZ"]
---
take(arr,(sizeOf(arr)-1)) map (
$ ++ "||" // do your manipulation to modify the custom entry
)
take
已记录 here
出于好奇,你是不是将这个结果数组连接成一个字符串?您的问题似乎表明该函数的最终目标是返回一个字符串。如果你是,你可以 map
然后 joinBy
%dw 2.0
output application/json
var arr = ["ABC","XYZ", "DKJL"]
---
arr map "custom($($));" joinBy " || "
产出
"custom(ABC); || custom(XYZ); || custom(DKJL);"
如果像 Salim 的回答一样,您不应该在自定义中包装最后一个值,您还可以利用 reduce 的默认行为:
%dw 2.0
output application/json
var arr = ["ABC","XYZ", "DKJL"]
---
arr[-1 to 0] reduce ("custom($($)); || " ++ $$)
产出
"custom(ABC); || custom(XYZ); || DKJL"