【问题标题】:How to Identify last element in an Array in Dataweave如何在 Dataweave 中识别数组中的最后一个元素
【发布时间】:2021-03-19 00:14:14
【问题描述】:

我有一个 dataweave 表达式来创建自定义 String ,但我不想追加 ||到输入数组的最后一个元素。我怎样才能实现它?

    %dw 2.0
    output application/json
    var arr = ["ABC","XYZ"]
    ---
    arr  map((item,index) -> {
        index: "custom ('" ++ item ++ "'); " ++ "||"
    })

【问题讨论】:

  • 您要追加||到数组的最后一个元素,对于给定的数组是?
  • 不,我不想附加 ||对于最后一个元素,但它必须存在于所有其他元素中

标签: mule dataweave


【解决方案1】:

这会有帮助吗?

脚本

%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"
  }
]

【讨论】:

    【解决方案2】:

    您也可以尝试以下方法:

    %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

    【讨论】:

      【解决方案3】:

      出于好奇,您是否将这个结果数组加入到一个字符串中?您的问题似乎表明该函数的最终目标是返回一个字符串。如果你是,你可以先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"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-27
        • 1970-01-01
        • 2021-12-25
        • 2020-02-22
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 2013-06-14
        相关资源
        最近更新 更多