【问题标题】:Need to return an array element from a hashtable based upon if the key's array contains a certain value需要根据键的数组是否包含某个值从哈希表中返回一个数组元素
【发布时间】:2022-01-21 19:44:04
【问题描述】:

我有一个带有两个键的哈希表,每个键都是一个数组。如果一个键的数组包含给定值,我想从第二个键返回相同的索引项。这是sn-p的代码:

$ht=@{"Name" = @("Release", "Build", "Test", "CI/CD")
    "Type" = @("Release Workflow", "Build Workflow", "Testing Workflow", "CI/CD Workflow")
}



if($ht.Name.Contains("Release")){
    
}

所以对于第二个语句,我想返回值“Release Workflow”。到目前为止,我运气不佳,我们将不胜感激。

【问题讨论】:

    标签: arrays powershell hashtable


    【解决方案1】:

    我不太确定这是否是您要查找的内容:

    $ht = @{
        "Name" = @("Release", "Build", "Test", "CI/CD")
        "Type" = @(
            "Release Workflow", "Build Workflow"
            "Testing Workflow", "CI/CD Workflow"
        )
    }
    $key = "Release"
    
    # Might want to use `-contains $key` or `$key -in` here
    if($ht.Name.Contains($key)){
        $ht['Type'][$ht['Name'].IndexOf($key)]
    }
    

    请注意,.Contains(..) 数组方法区分大小写,您可能希望使用 -contains-in 运算符进行不区分大小写的查找。

    【讨论】:

    • 明白了!伙计,我非常接近,非常感谢你澄清这一点,你拯救了一天!还要感谢区分大小写,我会坚持一些 ToLower() 或类似的东西。我们有要解析的文件,并且火箭外科医生与 YAML 文件中的“名称:”值不一致,因此我们必须找到它,然后尝试找出名称是什么,这将告诉我们它在做什么(Github 操作) .再次感谢您的帮助!
    • @RichardWolford 很高兴,很乐意提供帮助。我绝对建议您使用运算符(-in-contains)而不是 .Contains($something.ToLower()),在这种情况下,运算符效率更高。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2017-04-13
    • 2013-05-17
    • 2021-01-08
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多