从哈希表数组的键创建数组
问题描述:
我有一个数组,其中每个元素都是哈希表。每个散列表都有相同的密钥。它是:从哈希表数组的键创建数组
@(
@{"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
但我不喜欢这样的余弦其三行代码。感觉像我应该能够在一行代码中完成的事情。有没有办法?
答
只是这样做:
$hash | %{$_.MarketShortCode}
也就是说,从块返回,而不是将它添加到一个数组,然后解除引用数组的值。
如果您使用PowerShell的3+,还有的甚至更短的方式:
$hash.MarketShortCode
PowerShell的自动应用点.
在当它使用这样的阵列中的每个项目,但它不支持,直到V3 。
容易,因为呃!谢谢@ briantist。显然,我必须等待9分钟才能将其标记为答案。 – jamiet
(这相当主观但是)我真的更喜欢'$ hash | %{$ _ ['MarketShortCode']}'在“属性”类型参考('$ _。MarketShortCode') - 后者不明确,'[“key”]'不是 –
@ MathiasR.Jessen我更喜欢当属性名称要在脚本中进行硬编码时使用点符号,以及在运行时生成或选择名称时使用括号的项目符号(可能不是正确的术语)。 – briantist