2015-09-03 23 views
0

我已经很简单的情况,我已经2个阵列,3个元素。元素99%是相同的,但顺序会有所不同。我需要知道订单是否正确/符合。以下是简化情况。比较PowerShell中的两个阵列包括订单

[System.Collections.ArrayList] $aNICOrderOne = @("IBR","Service", "Admin") 
[System.Collections.ArrayList] $aNICOrder = @("Service","IBR", "Admin") 
$CompareNICOrderOne = Compare-Object $aNICOrder $aNICOrderOne -PassThru 
if ("$CompareNICOrderOne" -eq "") { 
    Write-Host "All good" 
} else { 
    Write-Host "Not good (expected $aNicOrderOne) - provided ($anicOrder)" 
} 

不幸的是以上的回报“”这意味着比较后两个数组是相同的,在理论上他们是但对我来说秩序事项,并在这种情况下,它是不是我要找的。

回答

2

如果你确定只有3个元素你可以在一个循环中直接对它们进行比较。如果元素不匹配,请设置可以使用的标志。

$orderFlag = $false 

for ($i = 0; $i -lt 3; $i++) { 
    if ($aNICOrderOne[$i] -ne $aNICOrder[$i]) { 
    $orderFlag = $true 
    break 
    } 
} 

if($orderFlag) { 
    write-host "Order not correct" 
} 
else { 
    write-host "All good" 
} 
+0

这就是方法之一......如此。如果元素数量发生变化,Buf会变得复杂。 – MadBoy

+0

那么不是真的 - 只是用最大阵列的'.length'财产和捕捉任何'IndexOutOfRangeException'。这种方法实际上可能更快,因为这将不匹配,并且因此在第一元件上打破可能没有完整地阅读每个阵列 – arco444