首页 > 解决方案 > 在哈希表数组中查找重复项

问题描述

我有一个哈希表数组,我需要查找是否有元素具有相同的Name.

我有这个HasDuplicate函数,它返回True或者False数组是否包含重复。

我在这里所做的是遍历每个元素并将Name其添加到另一个数组中,然后检查它是否为exists. 但是这段代码看起来不太好,我在想是否有另一种方法可以实现这一点

# object looks like this
$array = @(
    @{ Name = 'First', Passed = $True }
    @{ Name = 'First', Passed = $False }
)

Function HasDuplicate
{
    param($array)
    $all = @()
    foreach($item in $array)
    {
        $item_name = $item.Name
        if($all -contains $item_name)
        {
            Write-Error "Duplicate name ""$item_name"""
            return $True
        }
        else
        {
            $all += $item_name
        }
    }
    return $False
}

标签: powershell

解决方案


Group-Object 可能是最简单的,如下所示:

$array = @(
    @{ Name = 'First'; Passed = $True }
    @{ Name = 'First'; Passed = $False }
)

$array.Name | Group-Object | Where-Object Count -GT 1

推荐阅读