从哈希表数组的键创建数组

时间:2015-11-13 22:38:07

标签: powershell

我有一个数组,其中每个元素都是一个哈希表。每个哈希表都具有相同的键。这是:

@(
    @{"MarketShortCode"="abc";"MarketName"="Market1"    },
    @{"MarketShortCode"="def";"MarketName"="Market2"    },
    @{"MarketShortCode"="ghi";"MarketName"="Market3"    },
    @{"MarketShortCode"="jkl";"MarketName"="Market4"    }
)

我想要一个很好的方法来提取一个只包含MarketShortCode键值的数组。所以我想要这个:

@("abc","def","ghi","jkl")

这是我提出的最好的:

$arr = @()
$hash | %{$arr += $_.MarketShortCode}
$arr

但我不喜欢它的三行代码。感觉像我应该能够在一行代码中做的事情。有办法吗?

1 个答案:

答案 0 :(得分:2)

这样做:

$hash | %{$_.MarketShortCode}

也就是说,从块中返回值而不是将其添加到数组中,然后取消引用该数组。

如果你使用的是PowerShell 3+,那么还有更短的方法:

$hash.MarketShortCode

当使用这种方式时,PowerShell会自动将点.应用于数组中的每个项目,但直到v3才支持它。