我有一个arrayList value1,value2,value3,value4等。我想将值作为变量访问,即vars.value [将索引作为变量传递]。访问第一个索引后,我想增加值
答案 0 :(得分:0)
这里最棘手的部分是,使用DataWeave创建数据后,该数据变为只读状态。因此,即使按索引访问数组中的元素也很容易,即使索引是var:
var ss = ["hello", "world"]
var n = 1
---
ss[n]
// Output: "World"
您不能像这样修改它:
ss[n] = "new value"
您可以通过两种方式之一来完成自己想做的事情。如果您不关心数组的顺序,则可以删除一个元素(该数组返回一个不包含您删除的元素的新数组),然后在末尾添加一个新元素(同样,返回一个新数组)
var ss = ["hello", "world"]
var n = 0
---
(ss - n) + "space"
// Output: ["world", "space"]
我想,如果您确实关心订单,那么最好的选择是map
。但是您将必须检查每次迭代的索引是否都与var相匹配,并且需要通过输入数组来完成整个迭代:
var ss = ["hello", "world"]
var n = 0
---
["hello", "world"] map (s, idx) ->
if (idx == n) "goodbye" else s
// Output: ["goodbye", "world"]
这是您要实现的目标的更具体示例,使用数字而不是字符串:
var ns = [1,2,3,4,5]
var indexToIncrement = 0
---
ns map (n, idx) ->
if (idx == indexToIncrement) n + 1 else n
// Output: [2,2,3,4,5]
答案 1 :(得分:0)
我能够通过使用值[[0]初始化变量并将其递增来实现此目的,就像#[vars.variable + 1]