[英]How to map 2 arrays of object using PowerShell?
我想映射一個數組對象。 我需要找到數組的匹配對象。 對象匹配后,我需要停止檢查其他對象,然后繼續下一個過程。
我試過這個,但它總是返回不匹配,即使數組對象匹配存在。
$ID = @("8537", "8538", "8539", "8540", "85AC", "85DE", "82EA")
$Signal = @("8537", "8220")
for ($i = 0; $i -lt $Signal.count; $i++)
{
if ($Signal[$i] -like "$ID[$i]")
{
"found ‘$($Signal[$i])’
at index $i"
# Do some process
}
else {
"Not Match"
# Do some process
}
}
你應該測試類似的東西:
cls
$ID = @("8538", "8539", "8540", "85AC", "85DE", "82EA","8537")
$Signal = @("8537","8220","85DE")
for ($i = 0; $i -lt $ID.count; $i++) {
for ($j = 0; $j -lt $Signal.count; $j++) {
if ($ID[$i] -like $Signal[$j])
{
"found $($ID[$i]) at index $i"
# Do some process
}
else
{
"Not Match"
# Do some process
}
}
}
正如我在上面的評論中提到的 - 為了使您的示例工作,您可以使用這樣的嵌套循環:
$ID = @("8537", "8538", "8539", "8540", "85AC", "85DE", "82EA")
$Signal = @("8234", "8512", "8220")
$MatchFound = $false
for ($i = 0; $i -lt $Signal.count; $i++) {
for ($x = 0; $x -lt $ID.Count; $x++) {
if ($Signal[$i] -eq $ID[$x]) {
"found '$($Signal[$i])' at index $i"
$MatchFound = $true
}
}
}
if (-not $MatchFound) {
"No match was found"
}
如果您有一個想要比較的復雜對象,您可以查看 cmdlet Compare-Object 。
如果您需要進行匹配過程,如果存在至少 1 個匹配對象,您可以嘗試以下操作:
$ID = @("8538", "8539", "8540", "85AC", "85DE", "82EA","8537")
$Signal = @("8537","8220","85DE")
$matched = $false
for ($i = 0; $i -lt $ID.count; $i++) {
if ($matched) {
break
}
for ($j = 0; $j -lt $Signal.count; $j++) {
if ($ID[$i] -like $Signal[$j])
{
$matched = $true
"found $($ID[$i]) at index $i"
break
}
}
}
if ($matched) {
# Do some process
} else {
"Not Match"
# Do some process
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.