UDF > Array >


_ArrayUnique

Retourne les éléments d'une colonne d'un tableau 1D ou 2D, en supprimant tous les doublons

#include <Array.au3>
_ArrayUnique ( Const ByRef $aArray [, $iColumn = 0 [, $iBase = 0 [, $iCase = 0 [, $iCount = $ARRAYUNIQUE_COUNT [, $iIntType = $ARRAYUNIQUE_AUTO]]]]] )

Paramètres

$aArray Le tableau à traiter
$iColumn [optionnel] Index, compté à partir de 0, de la colonne à utiliser - par défaut 0 (2D uniquement)
$iBase [optionnel] Le tableau est de base 0 ou 1. Par défaut, de base 0.
$iCase [optionnel] Flag pour indiquer si les opérations doivent être sensibles à la casse. Par défaut 0 : insensible à la casse.
$iCount [optionnel] Flag pour déterminer si l'élément [0] contient le nombre d'éléments retournés (par défaut) - voir Remarques pour plus de détails.
$iIntType [optionnel] Flag pour changer l'algorithme de la fonction - voir Remarques pour plus de détails.

Valeur de retour

7 - Incompatibilité ente les éléments Int32 et Int64 - nécessite la définition de $iIntType
Succès: Retourne un tableau 1D contenant seulement les éléments de cette colonne.
Échec: Définit @error <> 0.
@error: 1 - $aArray n'est pas un tableau ou est un tableau vide.
2 - $aArray n'est pas un tableau 1D ou 2D
3 - $iBase ou $iCase contient une valeur invalide
4 - $iCount contient une valeur invalide
5 - $iIntType contient une valeur invalide
6 - $iColumn est en dehors des limites du tableau

Remarques

Retourne un tableau contenant les éléments uniques.

Par défaut $iCount est défini à $ARRAYUNIQUE_COUNT (1) et un décompte est placé dans l'élément [0]. La définition de $iCount à $ARRAYUNIQUE_NOCOUNT (0) retourne une liste sans décompte.

La fonction peut utiliser un algorithme rapide, tant que les éléments devant être examinés ne contiennent pas des valeurs Int64 (par exemple des entiers 64 bits, des handles, des pointeurs) - si ces valeurs sont présentes alors la fonction doit utiliser un algorithme plus lent. La définition du paramètre $iIntType modifie le comportement de la fonction comme suit:

$ARRAYUNIQUE_AUTO (0) (par défaut)     : Si le premier élément n'est pas un entier, exécute l'algorithme rapide - retourne une erreur si des éléments Int64 sont trouvées.
    : Si le premier élément est un entier, définissez les valeurs pertinentes FORCE32 ou Force64 ci dessous.
$ARRAYUNIQUE_FORCE32 (1)     : Force tous les entiers dans le type Int32, exécute l'algorithme rapide - retourne une erreur si des valeurs Int64 sont trouvées.
$ARRAYUNIQUE_FORCE64 (2)     : Force tous les entiers dans le type Int64, exécute l'algorithme lent - retourne une erreur si des valeurs Int32 sont trouvées.
$ARRAYUNIQUE_MATCH (3)         : 0x00000123 et 0x0123 sont considérées comme la même valeur, seulement la première rencontrée est retournée - exécute l'algorithme lent.
$ARRAYUNIQUE_DISTINCT (4)     : 0x00000123 et 0x0123 sont considérées comme valeurs distinctes, les deux sont retournées - exécute l'algorithme lent.

Une valeur autre que la valeur par défaut $ARRAYUNIQUE_AUTO est nécessaire seulement s'il est connu ou suspecté que des valeurs Int64 vont être examinées. L'obligation d'utiliser un algorithme plus lent lors du traitement des valeurs Int64 est une limitation de l'objet Scripting.Dictionnary utilisé dans la fonction, pas de AutoIt lui-même.

En relation

_ArrayMax, _ArrayMin

Exemples

Exemple 1

#include <Array.au3>

Local $aArray[10] = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] ; Crée un tableau 1D qui contient des valeurs en double.
_ArrayDisplay($aArray, "$aArray Initial") ; Affiche le tableau initial.

Local $aArrayUnique = _ArrayUnique($aArray) ; Utilise les paramètres par défaut pour créer un tableau sans doublon.
_ArrayDisplay($aArrayUnique, "$aArray Unique") ; Affiche le tableau sans doublon.

Exemple 2

#include <Array.au3>

Local $aArray[6][2] = [[1, "A"],[2, "B"],[3, "C"],[1, "A"],[2, "B"],[3, "C"]]
_ArrayDisplay($aArray, "Tableau 2D initial") ; Affiche le tableau initial.
Local $aArrayUnique = _ArrayUnique($aArray) ; Utilise les paramètres par défaut pour créer un tableau sans doublon sur la première colonne.
_ArrayDisplay($aArrayUnique, "$aArray col 1") ; Affiche le tableau sans doublon sur la première colonne.

$aArrayUnique = _ArrayUnique($aArray, 1) ; Crée un tableau sans doublon à partir de la deuxième colonne.
_ArrayDisplay($aArrayUnique, "$aArray col 2") ; Affiche le tableau sans doublon.