在 powershell 中使用 2 个数组中的多个值创建哈希
Create a hash with multiple values from 2 arrays in powershell
我想从大小不等的 2 个数组 A 和 B 中为每个键创建一个具有多个值的散列。
$A = @('usr1','usr2', 'usr3', 'usr4')
$B = @('INC1','INC2','INC3','INC4','INC5','INC6')
$h = [ordered]@{}
for($i=0; $i -lt $B.Count; $i++)
{
for($j=0;$j -lt $A.Count; $j++)
{
$h[$A[$j]] += @($B[$j])
}
}
`
我得到的输出
Name Value
---- -----
usr1 {INC1, INC2, INC3, INC4...}
usr2 {INC1, INC2, INC3, INC4...}
usr3 {INC1, INC2, INC3, INC4...}
usr4 {INC1, INC2, INC3, INC4...}
期望的输出:
Name Value
---- -----
usr1 {INC1, INC5}
usr2 {INC2, INC6}
usr3 {INC3}
usr4 {INC4}
我需要以均等的方式将数组 B 中的项目分配给数组 A 的成员。
也就是说,$B
的元素应该一个接一个地收集到以 $A
的元素命名的哈希表条目中,直到没有更多的 $B
项被留下。
我在上面的代码中做错了什么?
使用取模运算符(%
)对"wrap around"末尾任何超过最小数组长度的值:
$table = [ordered] @{}
for($i = 0; $i -lt $B.Count; $i++){
$table[$A[$i % $A.Count]] += @($B[$i])
}
我想从大小不等的 2 个数组 A 和 B 中为每个键创建一个具有多个值的散列。
$A = @('usr1','usr2', 'usr3', 'usr4')
$B = @('INC1','INC2','INC3','INC4','INC5','INC6')
$h = [ordered]@{}
for($i=0; $i -lt $B.Count; $i++)
{
for($j=0;$j -lt $A.Count; $j++)
{
$h[$A[$j]] += @($B[$j])
}
}
` 我得到的输出
Name Value
---- -----
usr1 {INC1, INC2, INC3, INC4...}
usr2 {INC1, INC2, INC3, INC4...}
usr3 {INC1, INC2, INC3, INC4...}
usr4 {INC1, INC2, INC3, INC4...}
期望的输出:
Name Value
---- -----
usr1 {INC1, INC5}
usr2 {INC2, INC6}
usr3 {INC3}
usr4 {INC4}
我需要以均等的方式将数组 B 中的项目分配给数组 A 的成员。
也就是说,$B
的元素应该一个接一个地收集到以 $A
的元素命名的哈希表条目中,直到没有更多的 $B
项被留下。
我在上面的代码中做错了什么?
使用取模运算符(%
)对"wrap around"末尾任何超过最小数组长度的值:
$table = [ordered] @{}
for($i = 0; $i -lt $B.Count; $i++){
$table[$A[$i % $A.Count]] += @($B[$i])
}