La comparaison de deux tableaux & obtenir les valeurs qui ne sont pas communs
je voulais une petite logique de comparer le contenu de deux tableaux & obtenir la valeur qui n'est pas commun d'entre eux à l'aide de powershell
exemple si
$a1=@(1,2,3,4,5)
$b1=@(1,2,3,4,5,6)
$c ce qui est le résultat devrait me donner la valeur "6
" ce qui est le résultat de ce qui est la rare valeur entre les deux tableaux.
Peut quelqu'un m'aider avec le même! merci!
- C'est que Perl? Cette page, à partir du Perl livre de recettes a quelques bons commentaires sur ceci: docstore.mik.ua/orelly/perl/cookbook/ch04_09.htm
- salut daniel je veux le même à faire en powershell
Vous devez vous connecter pour publier un commentaire.
$keys = @($Null) * $ht.Keys.Count
d'initialiser un tableau de la bonne taille puis$ht.Keys.CopyTo($keys, 0)
pour copier les Clés du tableau.KeyCollection
àobject[]
conversion par juste envelopper la valeur dans@()
comme@($keys)
.$Yellow = $a | Where {$b -NotContains $_}
$Yellow
contient tous les éléments d'$a
à l'exception de ceux qui sont dans$b
:$Blue = $b | Where {$a -NotContains $_}
$Blue
contient tous les éléments d'$b
à l'exception de ceux qui sont dans$a
:$Green = $a | Where {$b -Contains $_}
Pas en question, mais de toute façon;
Green
contient les éléments qui sont à la fois$a
et$b
.ForEach
boucles pour cela, mais à la fin c'est tout simplement:$NotGreen = $Yellow + $Blue
, ce qui est écrit:$NotGreen = ($a | Where {$b -NotContains $_}) + ($b | Where {$a -NotContains $_})
Regarder
Compare-Object
Ou si vous voulez savoir d'où l'objet appartient, ensuite, regardez SideIndicator:
Compare-Object $a1 $b1 | ForEach-Object { $_.InputObject }
etCompare-Object $a1 $b1 -PassThru
semblent produire à l'identique de sortie. Bien sûr, l'-PassThru option est plus concis.Vos résultats ne seront pas utile, sauf si les tableaux sont d'abord triés.
Le tri d'un tableau, le lancer à travers Tri-Objet.
Compare-Object $x $y
donnera le même résultat que ci-dessus, montrant que la 6 est absent de la référence de tableau. (J'ai vérifié cette fois comme aujourd'hui le PS version (5.1) ainsi que la version PS 3.)Essayer:
Ou, vous pouvez utiliser:
L'ordre n'a pas d'importance.
Cela devrait aider, utilise de simples de la table de hachage.