Arrays 如何比较两个数组,删除相似的项,而不遍历整个数组?
是否可以比较两个数组并删除相等的值(如果它们位于同一索引),而不遍历两个数组?以下是一个例子:Arrays 如何比较两个数组,删除相似的项,而不遍历整个数组?,arrays,powershell,find,compare,powershell-2.0,Arrays,Powershell,Find,Compare,Powershell 2.0,是否可以比较两个数组并删除相等的值(如果它们位于同一索引),而不遍历两个数组?以下是一个例子: $array1 = @(1,2,3,4,5,6,7,23,44) $array2 = @(1,1,3,4,5,7,6,23,45) $array3 = $sudo_compare_function $array1 $array2 其中$array3现在将包含一个索引数组,其中$array2与$array1数组不同: (1,5,6,8) 如果没有类似的内容,是否有一种简单的方法可以在不迭代两个数组
$array1 = @(1,2,3,4,5,6,7,23,44)
$array2 = @(1,1,3,4,5,7,6,23,45)
$array3 = $sudo_compare_function $array1 $array2
其中$array3
现在将包含一个索引数组,其中$array2
与$array1
数组不同:
(1,5,6,8)
如果没有类似的内容,是否有一种简单的方法可以在不迭代两个数组的情况下执行类似操作?使用
Compare Object
cmdlet获取不同值的数组:
$array1 = @(1,2,3,4,5,6,7,23,44)
$array2 = @(1,1,3,4,5,7,6,23,45)
$array3 = @(Compare-Object $array1 $array2 | select -Expand InputObject
要仅比较相应的索引,您必须手动进行比较:
function Compare-Indexes($a1, $a2) {
$minindex = [math]::Min($a1.Length, $a2.Length)
$maxindex = [math]::Max($a1.Length, $a2.Length)
for ($i = 0; $i -le $minindex; $i++) {
if ( $a1[$i] -ne $a2[$i] ) { $i }
}
for ( $i = $minindex + 1; $i -le $maxindex; $i++ ) { $i }
}
$array1 = @(1,2,3,4,5,6,7,23,44)
$array2 = @(1,1,3,4,5,7,6,23,45)
$array3 = Compare-Indexes $array1 $array2
这不只是给我不同的值吗?我想找到在数组中发现差异的索引。这是非常具体的,我知道没有函数能做到这一点。需要进行迭代。如果您不这样做,那么您调用的函数将失败。