在哈希表数组中查找重复项

Ert*_*ani 0 powershell

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

我有此HasDuplicate函数返回TrueFalse数组是否包含重复项。

我在这里所做的是,我遍历每个元素,并将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
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*ton 8

组对象可能是最简单的方法,如下所示:

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

$array.Name | Group-Object | Where-Object Count -GT 1
Run Code Online (Sandbox Code Playgroud)