Я пытаюсь обеспечить разбиение массива неизвестной длины на один или несколько массивов с максимум 20 элементами.
Я искал вокруг и нашел несколько ответов на похожие вопросы на основе массивов, содержащих числовые последовательности (или, может быть, я просто что-то упустил), но ничего для массива строк.
Я придумала решение, но оно кажется немного запутанным, и я чувствую, что оно может быть и лучше.
Например, возьмите этот массив -
$metricDefinitionsHash= [ordered]@{"this one" = "111"; "that one" = "222"; "another one" = "333"}
И ради этого примера, скажем, я хочу только максимум двух элементов -
$metricsQueryParts = @()
$counter = 0
$metricDefinitionsHash.Keys | ForEach-Object {
$index = [System.Math]::Floor($counter / 2)
if ($metricsQueryParts.Length -eq $index)
{
$metricsQueryParts += ""
$metricsQueryParts[$index] = @()
}
$metricsQueryParts[$index] += $_
$counter++
}
Так что теперь у меня есть массив массивов -
@(@("this one", "that one"), @("another one"))
Но ... Могу ли я достичь своей цели более эффективным способом?