Создать хэш с несколькими значениями из 2 массивов в powershell - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу создать хэш с несколькими значениями для каждого ключа из 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.

Что я делаю неправильно вкод выше?

1 Ответ

0 голосов
/ 19 декабря 2018

Используйте оператор по модулю (%), чтобы "обернуть" в конце любое значение, которое превышает длину наименьшего массива:

$table = [ordered] @{}
for($i = 0; $i -lt $B.Count; $i++){
  $table[$A[$i % $A.Count]] += @($B[$i])
}
...