You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PowerShell数组均分为5个长度尽可能相等的子数组?

PowerShell数组均分实现

针对你需要将数组分割为指定数量、长度尽可能相等的子数组的需求,这里提供一个可靠的实现,解决你之前遇到的分割不均、元素重复问题:

$MainArray = @(1,2,3,4,5,6,7,8,9,10,11)
$targetSplitCount = 5

# 计算基础子数组长度和剩余元素数
$baseLength = [math]::Floor($MainArray.Count / $targetSplitCount)
$extraElements = $MainArray.Count % $targetSplitCount

$splitResult = @()
$currentPosition = 0

# 循环生成每个子数组
for ($i = 0; $i -lt $targetSplitCount; $i++) {
    # 前extraElements个子数组多分配一个元素
    $currentLength = $baseLength + ($i -lt $extraElements ? 1 : 0)
    # 切片截取子数组,逗号确保添加的是数组而非展开元素
    $splitResult += ,$MainArray[$currentPosition..($currentPosition + $currentLength - 1)]
    # 更新当前位置
    $currentPosition += $currentLength
}

# 验证输出
$splitResult | ForEach-Object {
    Write-Host "子数组元素: $($_ -join ', ')"
}

逻辑说明

  1. 基础长度与余数计算:总元素数除以目标分割数得到基础长度,余数就是需要多分配一个元素的子数组数量(示例中11÷5余1,所以1个子数组长度为3,其余4个为2)
  2. 逐段截取:通过索引切片精准截取对应长度的子数组,避免重复或遗漏
  3. 数组引用保留:使用,$MainArray[...]确保将子数组作为整体添加到结果数组中,而不是将元素逐个展开

输出结果

运行后会得到你期望的结构:

  • 子数组元素: 1, 2, 3
  • 子数组元素: 4, 5
  • 子数组元素: 6, 7
  • 子数组元素: 8, 9
  • 子数组元素: 10, 11

内容的提问来源于stack exchange,提问作者pacokent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:10:37