.net - 在多个嵌套哈希表、数组和当前循环中迭代循环的最佳实践是什么?
问题描述
我正在尝试设置一个变量,以简化这些哈希表集中的冗余......我知道我正在做的事情可以完成,但我不确定在哪里设置锚或如何触摸每个循环内的索引。也许我的方法可以通过其他方式更好地解决......
我尝试在索引之外使用 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 ] 或其他类似的结果。这就是我所追求的目标。
有任何想法吗?
解决方案
下面是一个使用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
推荐阅读
- c# - 如何在 ModelState 中预定义键以及如何添加更多键?
- ssis - SSIS 结合 2 个来源,Merge 和 Join 不适用
- r - 如何在 R 中绘制具有 3 个 FACTORS 的分组和堆叠条形图?
- ruby-on-rails - 使用自动递增名称的 Rails 表单中的输入 X 创建 X 数量的新数据库行
- angular - 如何在 Angular 产品构建后减少文件名
- mysql - 返回 5 公里内的项目并加入 4 个不同的表 mysql?
- python - gc 上的分段错误,使用 ctypes
- android - 如何解决错误代码:0,Android 上的消息 HTTP 失败 - IONIC API
- android - Android Q 删除文件文件操作
- kotlin - 这是一个比较两个对象的灵活数据类的好解决方案吗?