Powershell 如何实现两个数组元素交叉组合生成新数组
PowerShell 双数组交叉组合实现方案
你需要实现的是两个数组的笛卡尔积按第二数组维度分组拼接,可通过以下方法实现:
基础实现代码
# 定义原始数组 $a = @('Blue','red','green') $b = @('car', 'bike') # 存储最终分组结果 $groupResult = @() foreach ($itemB in $b) { # 生成当前$itemB对应的拼接数组 $currentGroup = $a | ForEach-Object { "$_ $itemB".ToLower() } # 逗号前缀避免数组被自动展开平铺 $groupResult += ,$currentGroup }
结果查看与输出
- 查看car对应的分组:执行
$groupResult[0],输出为blue car、red car、green car - 查看bike对应的分组:执行
$groupResult[1],输出为blue bike、red bike、green bike
如果需要直接输出你示例中的格式,追加以下代码即可:
foreach ($group in $groupResult) { Write-Host "('$($group -join "','")')" }
运行后输出:
('blue car','red car','green car') ('blue bike','red bike','green bike')
简洁版写法
如果需要更精简的实现,可直接用管道嵌套生成结果:
$groupResult = $b | ForEach-Object { ,($a | ForEach-Object { "$_ $($args[0])".ToLower() } $_) }
注意:代码中的
.ToLower()是为了匹配示例全小写的输出需求,如果你不需要统一大小写,直接删除该方法即可。
内容的提问来源于stack exchange,提问作者Nilay
相关产品推荐
相关产品推荐

