je voulais une petite logique pour comparer le contenu de deux tableaux et obtenir la valeur qui n'est pas commune parmi eux en utilisant PowerShell
exemple si
$a1=@(1,2,3,4,5)
$b1=@(1,2,3,4,5,6)
$ c qui est la sortie devrait me donner la valeur "6
" qui est la sortie de ce qui est la valeur peu commune entre les deux tableaux.
Quelqu'un peut-il m'aider avec le même! Merci!
PS > $c = Compare-Object -ReferenceObject (1..5) -DifferenceObject (1..6) -PassThru
PS > $c
6
$a = 1,2,3,4,5
$b = 4,5,6,7,8
$Yellow = $a | Where {$b -NotContains $_}
$Yellow
contient tous les éléments de $a
à l'exception de ceux qui se trouvent dans $b
:
PS C:\> $Yellow
1
2
3
$Blue = $b | Where {$a -NotContains $_}
$Blue
contient tous les éléments de $b
à l'exception de ceux qui se trouvent dans $a
:
PS C:\> $Blue
6
7
8
$Green = $a | Where {$b -Contains $_}
Pas en question, mais quand même; Green
contient les éléments qui se trouvent à la fois dans $a
et $b
.
PS C:\> $Green
4
5
Regardez Compare-Object
Compare-Object $a1 $b1 | ForEach-Object { $_.InputObject }
Ou si vous souhaitez savoir où l’objet appartient, consultez SideIndicator:
$a1=@(1,2,3,4,5,8)
$b1=@(1,2,3,4,5,6)
Compare-Object $a1 $b1
Vos résultats ne seront utiles que si les tableaux sont d'abord triés. Pour trier un tableau, exécutez-le via Sort-Object.
$x = @(5,1,4,2,3)
$y = @(2,4,6,1,3,5)
Compare-Object -ReferenceObject ($x | Sort-Object) -DifferenceObject ($y | Sort-Object)
Essayer:
$a1=@(1,2,3,4,5)
$b1=@(1,2,3,4,5,6)
(Compare-Object $a1 $b1).InputObject
Ou, vous pouvez utiliser:
(Compare-Object $b1 $a1).InputObject
L'ordre n'a pas d'importance.
Cela devrait aider, utilise une table de hachage simple.
$a1=@(1,2,3,4,5) $b1=@(1,2,3,4,5,6)
$hash= @{}
#storing elements of $a1 in hash
foreach ($i in $a1)
{$hash.Add($i, "present")}
#define blank array $c
$c = @()
#adding uncommon ones in second array to $c and removing common ones from hash
foreach($j in $b1)
{
if(!$hash.ContainsKey($j)){$c = $c+$j}
else {hash.Remove($j)}
}
#now hash is left with uncommon ones in first array, so add them to $c
foreach($k in $hash.keys)
{
$c = $c + $k
}