我试图找到最佳方式来返回存储在数组中的哈希表,匹配另一个哈希表的所有属性,这是另一个哈希表来自阵列。如何比较哈希表的属性与Powershell中的哈希表阵列
例如,我有以下数组和哈希表变量:
$myarr = @(
@{"first" = "A";"second" = "B";"third" = "C";"fourth" = "D";"fifth" = "E"},
@{"first" = "M";"second" = "B";"third" = "C";"fourth" = "D";"fifth" = "E";"sixth"="F"},
@{"first" = "A";"second" = "B";"third" = "C";"fourth" = "D";"fifth" = "Z"})
$crit = @{"first"="A";"third"="C"}
我需要一种方法来恢复存储在阵列中,所有来自$crit
属性的匹配每个整个哈希表。在这个例子中,我希望看到$myarr[0]
和$myarr[2]
返回。
我可以通过一个通过$crit
一个属性循环,并在如下阵列比较每个哈希表实现这一点,但我想看看是否有更好的方法来比较的哈希表,我无法弄清楚,类似于数组Compare-Object
。
ForEach ($hash in $myarr) {
$match = $true
ForEach ($key in $crit.Keys) {If ($hash.$key -ne $crit.$key) {$match = $false;Break}}
If ($match) {$hash}}
这样做的最终目标是做内存使用量最少的比较,因为现实世界的应用程序将是比较成千上万的这些数组,包含数百哈希表,它们都具有100 +属性。显然任何帮助正确的方向是赞赏,但我的目标是尽可能简化这种比较。
这是一个一对多的比较过程中,或许多一对多? – mjolinor
@ mjolinor一对多;像$暴击一样的哈希,相比许多阵列像$ myarr。 –