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

PowerShell如何基于映射关系为数组元素及对象添加额外属性

PowerShell 实现方案

首先推荐用哈希表存储映射关系,针对100+条目的映射场景,O(1)的查找效率远高于分支判断语句,实现逻辑如下:


1. 先定义映射关系哈希表

$carManufacturerMap = @{
    "OPEL" = "GM"
    "BMW" = "Bayerishe Motoren Werke"
    "AUDI" = "Volkswagen group"
    "FORD" = "FORD Motor Company"
    # 剩余的所有映射条目按照上述格式补充即可
}

2. 处理不同类型的数组元素

场景A:数组元素为哈希表(你当前展示的场景)

直接遍历每个哈希表,追加manufacturer键值对即可:

foreach ($record in $Records) {
    $record["manufacturer"] = $carManufacturerMap[$record["car"]]
    # 若存在未收录的car值可加兜底逻辑,示例:
    # $record["manufacturer"] = $carManufacturerMap.ContainsKey($record["car"]) ? $carManufacturerMap[$record["car"]] : "未匹配厂商"
}

场景B:数组元素为带属性的PS自定义对象

两种实现方式可选:

  • 直接修改原对象,追加属性:
foreach ($record in $Records) {
    $mf = $carManufacturerMap[$record.car]
    $record | Add-Member -MemberType NoteProperty -Name "manufacturer" -Value $mf -Force
    # -Force参数可避免属性已存在时报错
}
  • 不修改原数组,生成带新属性的新对象数组(通用写法,也兼容哈希表场景):
$newRecords = $Records | Select-Object *, @{
    Name = "manufacturer"
    Expression = { $carManufacturerMap[$_.car] }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:39:03