计算并删除数组中的重复项
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}
在 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}