计算并删除数组中的重复项

Count and remove duplicates from an array

在 Powershell 中我有以下数组

foreach ($Record in $Records)
{ write-host $Record
}

@{car=OPEL; count=3}
@{car=BMW; count=2}
@{car=OPEL; count=8}
@{car=AUDI; count=3}
@{car=FORD; count=5}
@{car=FORD; count=4}
@{car=OPEL; count=4}
@{car=AUDI; count=5}
@{car=BMW; count=3}

我想删除属性“car”的重复元素,但是要对属性“count”进行计数和求和,所以上面的数组变成了

@{car=OPEL; count=15}
@{car=BMW; count=5}
@{car=AUDI; count=8}
@{car=FORD; count=9}

有什么关于如何完成这个的建议吗?

使用 Group-Object cmdlet 按 car 属性 值对对象进行分组,然后使用 Select-Object 创建新对象,总计数为:

$records |Group-Object -Property car |Select-Object Name,@{Name='Count';Expression={($_.Group |Measure-Object Count -Sum).Sum}}

合并Group-Object and Measure-Object如下(当然,可能更优雅的方式):

$Records | Group-Object -Property car |
    ForEach-Object {
        [pscustomobject]@{
            car = $_.Name;
            count = ($_.Group | Measure-Object -Property count -Sum).Sum
        }
    }
foreach ($Record in $RecordsSum) {
    Write-Host $Record
}

结果:

@{car=OPEL; count=15}
@{car=BMW; count=5}
@{car=AUDI; count=8}
@{car=FORD; count=9}