英文:
How to swap the elements of an array
问题
有没有办法交换数组的元素
输入 = [1,2,3,4,5,6]
交换第2个索引和第3个索引的值
输出 = [1,2,4,3,5,6]
英文:
Is there any way to swap the elemnts of an array
input = [1,2,3,4,5,6]
swap 2nd index and 3rd index values
Output= [1,2,4,3,5,6]
答案1
得分: 1
在ADF中,没有专门的函数来交换数组,所以需要使用临时变量,然后操作该临时变量的值以获得所需的结果。
要在ADF中交换数组,请按照以下步骤进行操作。
我创建了名为x
的数组变量,其值为[1,2,3,4,5,6]
,temp_middle
,temp_left
,temp_right
,temp_combined
,swapped_array
,以及用于要交换的索引的两个管道参数,分别命名为a
和b
。
然后,我使用索引将x
数组分成3个变量,分别表示最小索引左侧、最大索引右侧和两个索引之间的中间部分。
- 要获取左侧部分并将其存储在变量
temp_left
中,我使用以下表达式。
@take(variables('x'), pipeline().parameters.a)
- 要获取右侧部分并将其存储在变量
temp_right
中,我使用以下表达式。
@skip(variables('x'), add(pipeline().parameters.b,1))
- 要获取中间部分并将其存储在变量
temp_middle
中,我使用以下表达式。
@take(skip(variables('x'), add(pipeline().parameters.a,1)), sub(pipeline().parameters.b, add(pipeline().parameters.a,1)))
之后,我使用If活动来检查数组的中间部分是否为空,使用表达式@empty(variables('temp_middle'))
。
- 如果中间部分为空,控制将进入真条件,并在真条件下,我们将使用另一个设置变量来组合左侧、右侧和中间部分,并交换元素。在真条件下,由于中间部分为空,我们省略了它。
@createArray(variables('temp_left'), variables('x')[pipeline().parameters.b], variables('x')[pipeline().parameters.a], variables('temp_right'))
这将产生以下输出。
- 如果中间部分不为空,控制将进入假条件,并在假条件下,我们将使用另一个设置变量来组合左侧、右侧、中间部分并交换元素。在假条件下,中间部分不为空,我们会包括它。
@createArray(variables('temp_left'), variables('x')[pipeline().parameters.b], variables('temp_middle'), variables('x')[pipeline().parameters.a], variables('temp_right'))
- 要获得所需格式的数组,请使用以下表达式,并将值分配给所需的变量(真条件和假条件都适用)。
@json(concat('[', replace(replace(string(variables('temp')), '[', ''), ']', ''), ']'))
结果:
英文:
In ADF, for swapping array there is not a dedicated function is not supported. So, use a temporary variable and then manipulate that temporary variable value to get desire result.
To swap array in ADF follow the below approach.
I have created array variables named x
with values [1,2,3,4,5,6]
,temp_middle
,temp_left
,temp_right
,temp_combined
,swapped_array
and two pipeline parameters for indexes to be swapped named a
and b
.
Then I split the x
array using indexes in 3 set variables as left side of minimum index, right side of maximum index and middle part between both index.
- To get Left part in variable
temp_left
I used below expression.
@take(variables('x'), pipeline().parameters.a)
- To get Right part in variable
temp_right
I used below expression.
@skip(variables('x'), add(pipeline().parameters.b,1))
- To get middle part in variable
temp_middle
I used below expression.
@take(skip(variables('x'),add(pipeline().parameters.a,1)),sub(pipeline().parameters.b,add(pipeline().parameters.a,1)))
- After this I took If activity to check if middle part of array is empty or not with expression
@empty(variables('temp_middle'))
- If it is empty control will go to true condition and under true condition, we took another set variables to combine all the left, right, middle part and swap the elements. In true condition as middle part is empty, we are omitting it.
@createArray(variables('temp_left'),variables('x')[pipeline().parameters.b],variables('x')[pipeline().parameters.a],variables('temp_right'))
This will give output like below.
- If it is not an empty control will go to false condition and under false condition, we took another set variables to combine all the left, right, middle part and swap the elements. In false condition as middle part is not an empty, we are including it.
@createArray(variables('temp_left'),variables('x')[pipeline().parameters.b],variables('temp_middle'),variables('x')[pipeline().parameters.a],variables('temp_right'))
- To get the array in required format, use the below expression and assign the value to required variable (same for both True and false condition).
@json(concat('[',replace(replace(string(variables('temp')), '[', ''),']',''),']'))
Result:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论