我有一个数组,其中每个元素都是一个哈希表。每个哈希表都具有相同的键。这是:
@(
@{"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
但我不喜欢它的三行代码。感觉像我应该能够在一行代码中做的事情。有办法吗?
答案 0 :(得分:2)
这样做:
$hash | %{$_.MarketShortCode}
也就是说,从块中返回值而不是将其添加到数组中,然后取消引用该数组。
如果你使用的是PowerShell 3+,那么还有更短的方法:
$hash.MarketShortCode
当使用这种方式时,PowerShell会自动将点.
应用于数组中的每个项目,但直到v3才支持它。