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

PowerShell查找排序对象数组重复项遇无限循环问题求助

问题解决:PowerShell查找排序数组重复项的无限循环问题

核心问题分析

  • for循环语法错误:你写的for (($i -eq 1), ($i -lt $arr.Length), ($i++))是PowerShell的错误写法,逗号会创建数组而非定义for循环的初始化、条件、递增三个分句。这导致$i从未被正确初始化为1,也不会在每次循环后递增,直接陷入无限循环。
  • 对象全量比较而非属性比较:$arr[$i] -eq $arr[$i-1]是直接比较两个对象实例,即便它们的Name属性相同,只要是不同的对象实例,这个判断就会返回$false,无法正确识别重复的Name。

修正后的代码

# 用分号分隔for循环的三个逻辑部分,正确初始化并递增$i
for ($i = 1; $i -lt $arr.Length; $i++) {
    # 直接比较对象的Name属性,而非整个对象
    if ($arr[$i].Name -eq $arr[$i-1].Name) {
        Write-Host "Duplicates found: $($arr[$i].Name) and $($arr[$i-1].Name)"
    }
}

可选优化:避免重复输出同一组重复项

如果数组存在连续多个相同Name的元素,上面的代码会多次输出同一重复项,可调整为只在首次检测到重复时输出:

$prevName = $arr[0].Name
for ($i = 1; $i -lt $arr.Length; $i++) {
    if ($arr[$i].Name -eq $prevName) {
        Write-Host "Duplicate found: $($arr[$i].Name)"
    } else {
        $prevName = $arr[$i].Name
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:25:58