EGr*_*EGr 3 arrays powershell compare find 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
Run Code Online (Sandbox Code Playgroud)
其中$array3现在将包含索引的阵列,其中$array2来自不同的$array1数组:
(1,5,6,8)
Run Code Online (Sandbox Code Playgroud)
如果没有这样的东西,有没有一种简单的方法来做类似的事情而不需要遍历两个数组?
使用Compare-Objectcmdlet获取不同值的数组:
$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
Run Code Online (Sandbox Code Playgroud)
要仅比较相应的索引,您必须手动进行比较:
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
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2501 次  |  
        
|   最近记录:  |