代码之家  ›  专栏  ›  技术社区  ›  vrdse

通过其键访问嵌套的hasttables

  •  0
  • vrdse  · 技术社区  · 8 年前

    我尝试使用嵌套哈希表来获得特定的值(数字)。

    $Hashtable = @{
        'Feature1' = @{
            'Audit'  = 1
            'Block'  = 2
            'Change' = 3
        }
        'Feature2' = @{
            'Audit'  = 4
            'Block'  = 5
            'Change' = 3
        }
    }
    

    $Hashtable['Feature1']['Audit', 'Block']
    1
    2
    

    $Hashtable['Feature1', 'Feature2']
    
    Name                           Value
    ----                           ---- -
    Block                          2
    Change                         3
    Audit                          1
    Block                          5
    Change                         3
    Audit                          4
    

    但是,如果在第一个哈希表中指定多个键,则似乎无法访问嵌套的哈希表。

    $Hashtable['Feature1', 'Feature2']['Block', 'Audit']
    

    2 , 1 , 5 4 但是我却 $null .

    我确实有解决办法。如果我循环第一个结果,就会得到预期的结果。

    $Hashtable['Feature1', 'Feature2'] | % {$_['Block', 'Audit']}
    2
    1
    5
    4
    

    我希望我能像这样访问哈希表 $Hashtable[$Features][$Actions] 其中两个变量都是键数组。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Gabriel Negut    8 年前
    $Hashtable['Feature1', 'Feature2'].Block
    

    $Hashtable['Feature1', 'Feature2'] 是一个数组 array.Property 表示法是为数组的所有元素(需要PowerShell v3或更新版本)选择单个属性的简写方法。

    编辑:上述方法仅在需要单键时有效。如果需要多个,我想不出任何方法可以跳过对内部哈希表的迭代。一次选择多个键(例如。 $Hashtable['Feature1','Feature2'] )只能在哈希表上执行,不能在数组上执行,并返回一个数组,因此它不能被链接。

    推荐文章