如何交换数组元素

huangapple go评论55阅读模式
英文:

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_middletemp_lefttemp_righttemp_combinedswapped_array,以及用于要交换的索引的两个管道参数,分别命名为ab

然后,我使用索引将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:

如何交换数组元素

huangapple
  • 本文由 发表于 2023年2月23日 20:44:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/75545025.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定