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

请求协助修正PowerShell数组重复值检测代码

解决PowerShell数组重复值检测问题

你的代码逻辑错误的核心原因:遍历数组时,$key是数组中的单个元素值,并非该值在数组中的出现次数,所以$key.count永远等于1(除非元素本身是集合类型,但这不是你的场景),判断条件永远无法触发。

以下是两种正确的实现方式:

方式一:提取所有重复出现的唯一值(推荐)

使用Group-Object对数组元素按值分组,筛选出出现次数大于1的分组,提取分组名称即为重复值:

# 假设$value是你的目标数组
$duplicateValues = $value | Group-Object | Where-Object { $_.Count -gt 1 } | Select-Object -ExpandProperty Name
# 输出结果
$duplicateValues | ForEach-Object { Write-Host $_ }

说明:

  • Group-Object会将数组中相同值的元素归为一组,每个分组包含Count(该值出现次数)和Name(元素值)两个核心属性。
  • 通过Where-Object筛选出Count>1的分组,再用Select-Object -ExpandProperty Name提取重复的元素值。

方式二:输出所有重复的元素实例

如果你需要输出数组中所有重复出现的元素(而非去重后的唯一值,比如数组[1,2,2,3,3,3]要输出2,2,3,3,3),可以使用以下代码:

$value | ForEach-Object {
    $currentValue = $_
    # 统计当前值在数组中的出现次数
    $occurrenceCount = ($value | Where-Object { $_ -eq $currentValue }).Count
    if ($occurrenceCount -gt 1) {
        Write-Host $currentValue
    }
}

注意:

这种方式需要对每个元素遍历整个数组统计次数,效率较低,仅适合小型数组。

内容的提问来源于stack exchange,提问作者nick asdf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:35:22