Arrays 如何使用PowerShell映射2个对象数组?
我想映射一个数组对象。我需要找到数组中匹配的对象。在对象匹配之后,我需要停止检查其他对象,然后继续下一个过程 我尝试了这个方法,但它总是返回not match,即使数组对象匹配存在Arrays 如何使用PowerShell映射2个对象数组?,arrays,powershell,loops,object,match,Arrays,Powershell,Loops,Object,Match,我想映射一个数组对象。我需要找到数组中匹配的对象。在对象匹配之后,我需要停止检查其他对象,然后继续下一个过程 我尝试了这个方法,但它总是返回not match,即使数组对象匹配存在 $ID = @("8537", "8538", "8539", "8540", "85AC", "85DE", "82EA") $Signal = @("8537&qu
$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。如果至少存在一个匹配对象,则需要执行匹配过程,可以尝试以下操作:
$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
}
看起来这只是一个更复杂任务的例子,不是吗?您可以查看cmdlet
比较对象
。它是为比较对象而设计的。;-)为了让你的例子有效,我认为你应该使用嵌套循环。嗨,谢谢你的建议。非常感谢。但若我像你们的建议那个样使用嵌套循环,它总是转到不匹配进程,即使我有一个对象匹配,但它永远不会转到匹配进程。我的期望是,如果我至少有一个匹配对象,那么它将进入匹配过程,而不需要检查其他对象@如果我运行我在这里发布的代码,我得到一个匹配项。你能用我发布的代码试试吗?是的,我试过了。它匹配1个对象,但不匹配进程,它不匹配进程@OlafI实际上不知道你的意思。我添加了我得到的输出。嗨,谢谢你的建议。非常感谢。但如果我像你建议的那样使用,它总是进入不匹配过程,即使我有一个对象匹配,但它永远不会进入匹配过程。我的期望是,如果我至少有一个匹配对象,那么它将进入匹配过程,而不需要检查其他对象@哈库