【问题标题】:compare 2 arrays and return the index of an array when there is a match比较 2 个数组并在匹配时返回数组的索引
【发布时间】:2020-01-02 13:50:20
【问题描述】:

我有两个数组。一个是从 CSV 导入,第二个是项目和 ID 号列表。我的目标是将 CSV 中的一列与第二个数组进行比较。当它找到匹配项时,我希望它返回第二个数组的索引,以便我可以在以后的代码行中插入项目 ID 号。

我曾尝试使用 .IndexOf,但由于我将它与另一个数组进行比较,它没有找到值。程序运行时“NewPhaseName”的值可能不同,并且在运行时也会生成 NewPhaseNumber。我的脚本目前采用 CSV 文件,搜索 UniquePhaseNames,通过 API 发送这些名称以生成 NewPhaseNumber。然后,我需要稍后在我的脚本中使用该 NewPhaseNumber 进行另一个 API 调用。

$NewPhaseName = "Plan", "Test", "Deploy"
$NewPhaseNumber = "1077", "1089", "1100"

$Ticket.PhaseDescription[1] = "Plan"
$Ticket.PhaseDescription[2] = "Plan"
$Ticket.PhaseDescription[3] = "Deploy"

$PhaseIndex = $Ticket.PhaseDescription.IndexOf($NewPhaseName)
$NewPhaseIndex = $NewPhaseNumber[$PhaseIndex]

我希望得到的是

$NewPhaseIndex[0] = 1077
$NewPhaseIndex[1] = 1077
$NewPhaseIndex[2] = 1100

谢谢

【问题讨论】:

    标签: arrays powershell indexing compare


    【解决方案1】:

    我建议重新组织你的数据结构,或者从

    构建一个哈希表
    $NewPhaseName = "Plan", "Test", "Deploy"
    $NewPhaseNumber = "1077", "1089", "1100"
    
    $hash = @{}
    for($i=0;$i -lt $newPhaseName.Count; $i++){
      $hash[$NewPhaseName[$i]]=$NewPhaseNumber[$i]
    }
    $hash
    

    屈服:

    > $hash
    Name                           Value
    ----                           -----
    Plan                           1077
    Deploy                         1100
    Test                           1089
    

    # simulate Ticket array
    $Ticket = @"
    PhaseDescription
    "Plan"
    "Plan"
    "Deploy"
    "@ -split '\r?\n' | ConvertFrom-Csv
    
    # Append new column with NewPhaseIndex looked up from $hash
    $Ticket | Select-Object *,@{n='NewPhaseIndex';e={$hash[$PhaseDescriptiom]}}
    

    PhaseDescription NewPhaseIndex
    ---------------- -------------
    Plan             1077
    Plan             1077
    Deploy           1100
    

    【讨论】:

    • 非常感谢。我能够按照您的建议使用哈希表来解决我的问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2015-04-15
    相关资源
    最近更新 更多