Как лучше всего повторять цикл в нескольких вложенных хеш-таблицах, массивах и текущих циклах? - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь установить переменную, которая может упростить избыточность здесь в этих наборах хеш-таблиц ... Я знаю, что то, что я делаю, можно сделать, но я не уверен, где установить привязку иликак прикоснуться к указателю внутри каждого циклаВозможно, мой метод мог бы быть лучше разрешен другими способами ...

Я пытался использовать цикл for вне индекса, не работал так, как я пытался это сделать, и поэтому я просто умножил вывод ошибоквместо нацеливания на переменные.Я также попытался поместить дополнительный цикл во вложенные хеш-таблицы, и это на самом деле не уменьшает количество инструкций вообще ...

$Split       = ( $Config[2..237] ).Split(',')
$Configuration = [Ordered] @{  

Service =@{ 

        Name=@( 0..235 | % { $i = $_ * 11 ; foreach ( $j in ( $Split[ $i + 0  ] ) ) { if ( $j.Contains("_?????") ) { $j.Replace("_?????", $ServiceEnd ) } else { $j } } } ) }

Default =@{ 

        Home=@{ Full =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 1  ] } )
                Min  =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 2  ] } ) }

        Pro =@{ Full =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 3  ] } )
                Min  =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 4  ] } ) } }

Safe    =@{

        Desk=@{ Full =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 5  ] } )
                Min  =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 6  ] } ) }

        Lap =@{ Full =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 7  ] } )
                Min  =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 8  ] } ) } }

Tweaked =@{

        Desk=@{ Full =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 9  ] } )
                Min  =@( 0..235 | % { $i = $_ * 11 ; $Split[ $i + 10 ] } ) } } }

Я не хочу касаться первогомассив, потому что он делает именно то, что я хочу.Однако у остальных из них есть ощущение, что все они могут быть записаны с похожим результатом [$ i + 1..10] или чем-то еще.Это своего рода цель, которую я преследую.

Есть идеи?

1 Ответ

0 голосов
/ 09 июня 2019

ниже приведен пример использования Group-Object.

$i = 0
$h = $Config[2..237].Split(',') | Group-Object { $i % 11; $script:i++ } -AsHashTable

$Configuration2 = [Ordered]@{  
    Service = @{
        Name = $h[0].Replace("_?????", $ServiceEnd)
    }
    Default = @{ 
        Home = @{ Full = $h[1]; Min = $h[2] }
        Pro  = @{ Full = $h[3]; Min = $h[4] } 
    }
    Safe = @{
        Desk = @{ Full = $h[5]; Min = $h[6] }
        Lap  = @{ Full = $h[7]; Min = $h[8] }
    }
    Tweaked = @{
        Desk = @{ Full = $h[9]; Min = $h[10] }
    } 
}

Я думаю, что это можно рассматривать просто как CSV.

$data = $Config[2..237] | ConvertFrom-Csv -Header (0..10)
$data.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...