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

PowerShell如何按car属性去重数组并对count属性值求和

PowerShell 按car属性去重并累加count的实现方法

有两种常用的实现方式,分别适配不同的使用场景:

方案1:使用内置分组命令实现(写法最简)

直接利用PowerShell原生的Group-Object分组命令配合求和统计即可实现,代码量最少:

# 直接对$Records数组按car属性分组,分组后累加每组count值
$Records | Group-Object -Property car | ForEach-Object {
    [PSCustomObject]@{
        car = $_.Name
        count = ($_.Group | Measure-Object -Property count -Sum).Sum
    }
}

输出结果默认按car名称字母排序,如果你需要自定义排序可以在管道最后加Sort-Object调整顺序。

方案2:使用哈希表统计实现(性能最优)

如果数组数据量较大,用哈希表遍历统计的性能会明显优于分组命令,还可以支持保留car首次出现的顺序:

# 声明有序哈希表用于统计,保留car首次出现的顺序
$countStat = [ordered]@{}
foreach ($item in $Records) {
    if ($countStat.ContainsKey($item.car)) {
        # 已存在的car直接累加count
        $countStat[$item.car] += $item.count
    } else {
        # 首次出现的car初始化统计值
        $countStat[$item.car] = $item.count
    }
}

# 转换为目标格式输出
$countStat.GetEnumerator() | ForEach-Object {
    [PSCustomObject]@{
        car = $_.Key
        count = $_.Value
    }
}

该方案输出顺序和你示例需求的顺序完全一致:OPEL、BMW、AUDI、FORD。

两种方案最终的输出内容都和你预期的结果一致,直接遍历输出即可得到你给出的目标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:12:03