Powershell 连接数组值
Powershell join array values
我希望交叉组合数组的值来创建新数组。例如,
$a = @('Blue','red','green')
$b = @('car', 'bike')
类似于
('blue car','red car','green car')
和 ('blue bike','red bike','green bike')
PS:这不是我正在寻找的简单连接函数。
谢谢,
尼莱
$a = @('Blue', 'red', 'green')
$b = @('car', 'bike')
$outArrays = @(), @() # Initialize a 2-element array.
$i = 0
foreach ($elB in $b) {
$outArrays[$i++] = foreach ($elA in $a) { "$elA $elB" }
}
$outArrays[0]
现在包含 'blue car', 'red car', 'green car'
$outArrays[1]
现在包含 'blue bike', 'red bike', 'green bike'
上面的代码利用了 PowerShell 将 foreach
等循环语句用作 表达式 的能力,PowerShell 隐式地收集了 [=36] 中循环的所有输出=]数组([object[]]
;假设两个或更多输出)。
关于数组连接的一般信息:
要通过连接创建一个平面数组,只需使用+
:
# Creates a flat array with 5 elements:
# @('Blue', 'red', 'green', 'car', 'bike')
$a + $b
要创建一个双元素 嵌套 数组,请使用 ,
的一元形式,array constructor operator:
# -> Nested 2-element array:
# * Element 0 contains @('Blue', 'red', 'green')
# * Element 1 contains: @('car', 'bike')
, $a + , $b
顺便说一句:请注意,您并不严格需要 @(...)
, the array-subexpression operator 来创建数组文字;例如,
$a = 'Blue', 'red', 'green'
就行了。
您可以使用这种方法创建矩阵
# your input
$a = @('Blue','red','green')
$b = @('car', 'bike')
# create an empty result array
$result = @()
# iterate the input arrays and add the items to the result
$b | ForEach-Object { $x=$_; $a | ForEach-Object { $result += "$_ $x" } }
+=
运算符效率不高。它将为每次迭代创建一个新的结果实例。这可能适用于小型输入数组。
我希望交叉组合数组的值来创建新数组。例如,
$a = @('Blue','red','green')
$b = @('car', 'bike')
类似于
('blue car','red car','green car')
和 ('blue bike','red bike','green bike')
PS:这不是我正在寻找的简单连接函数。
谢谢, 尼莱
$a = @('Blue', 'red', 'green')
$b = @('car', 'bike')
$outArrays = @(), @() # Initialize a 2-element array.
$i = 0
foreach ($elB in $b) {
$outArrays[$i++] = foreach ($elA in $a) { "$elA $elB" }
}
$outArrays[0]
现在包含'blue car', 'red car', 'green car'
$outArrays[1]
现在包含'blue bike', 'red bike', 'green bike'
上面的代码利用了 PowerShell 将 foreach
等循环语句用作 表达式 的能力,PowerShell 隐式地收集了 [=36] 中循环的所有输出=]数组([object[]]
;假设两个或更多输出)。
关于数组连接的一般信息:
要通过连接创建一个平面数组,只需使用+
:
# Creates a flat array with 5 elements:
# @('Blue', 'red', 'green', 'car', 'bike')
$a + $b
要创建一个双元素 嵌套 数组,请使用 ,
的一元形式,array constructor operator:
# -> Nested 2-element array:
# * Element 0 contains @('Blue', 'red', 'green')
# * Element 1 contains: @('car', 'bike')
, $a + , $b
顺便说一句:请注意,您并不严格需要 @(...)
, the array-subexpression operator 来创建数组文字;例如,
$a = 'Blue', 'red', 'green'
就行了。
您可以使用这种方法创建矩阵
# your input
$a = @('Blue','red','green')
$b = @('car', 'bike')
# create an empty result array
$result = @()
# iterate the input arrays and add the items to the result
$b | ForEach-Object { $x=$_; $a | ForEach-Object { $result += "$_ $x" } }
+=
运算符效率不高。它将为每次迭代创建一个新的结果实例。这可能适用于小型输入数组。