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

PowerShell合并对象数组:去重且不丢失信息的实现方法

PowerShell 合并重复Num对象并去重Text内容

先看模拟你场景的示例输入数组:

$originalArray = @(
    [PSCustomObject]@{ Num = 1; Text = "Apple" },
    [PSCustomObject]@{ Num = 2; Text = "Banana" },
    [PSCustomObject]@{ Num = 1; Text = "Orange" },
    [PSCustomObject]@{ Num = 2; Text = "Banana" },
    [PSCustomObject]@{ Num = 3; Text = "Grape" },
    [PSCustomObject]@{ Num = 1; Text = "Apple" }
)

直接通过分组+去重合并即可实现需求,代码如下:

$resultArray = $originalArray | Group-Object Num | ForEach-Object {
    # 提取当前组所有Text内容,去重后合并为字符串
    $uniqueTexts = $_.Group.Text | Select-Object -Unique
    $mergedText = $uniqueTexts -join ", "

    # 生成包含唯一Num和合并后Text的新对象
    [PSCustomObject]@{
        Num  = [int]$_.Name  # 转换回数字类型,避免Group-Object返回的Name为字符串
        Text = $mergedText
    }
}

# 输出最终结果
$resultArray

关键逻辑说明:

  • Group-Object Num:将数组按Num属性分组,所有相同Num的对象会被归为同一组。
  • Select-Object -Unique:对每组内的Text去重,保留内容的首次出现顺序;若需要排序后去重,可替换为Sort-Object -Unique。
  • -join ", ":将去重后的Text合并为单个字符串,分隔符可自定义(比如换行符"n"、分号"; "`等)。
  • [int]$_.Name:修正Group-Object返回的Name属性类型,确保Num保持原始数字类型。

示例输出:

Num Text
--- ----
1   Apple, Orange
2   Banana
3   Grape

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:22:17