Funktionreferenz


_ArrayUnique

Beschreibung anzeigen in

Gibt die Elemente einer Spalte aus einem 1D oder 2D Array ohne deren Duplikate zurück

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

Parameter

$aArray Das zu verwendende Array
$iColumn [optional] zu verwendende Spalte (0-basierend) - Standard ist 0 (nur 2D Array))
$iBase [optional] Ist das Array 0-basiert oder 1-basiert. Standard 0: 0-basiert
$iCase [optional] Flag welches definiert, ob die Groß- und Kleinschreibung beachtet werden soll. Standard 0 : Groß- und Kleinschreibung wird nicht beachtet.
$iCount [optional] Flag welches definiert, ob das [0] Element die Anzahl der zurückgegebenen Items enthält (Standard). Siehe Bemerkungen für Details.
$iIntType [optional] Flag um den Funktionsalgorithmus zu ändern. Siehe Bemerkungen für Details.

Rückgabewert

Erfolg: ein 1D Array welches jedes Element der Spalte maximal einmal enthält
Fehler: Setzt das @error Flag auf ungleich null
@error: 1 - $aArray ist kein Array oder hat keine zu prüfenden Elemente.
2 - $aArray ist kein 1D oder 2D Array
3 - $iBase oder $iCase enthalten einen ungültigen Wert
4 - $iCount enthält einen ungültigen Wert
5 - $iIntType enthält einen ungültigen Wert
6 - $iColumn außerhalb der Arraygrenzen
7 - Fehlanpassung von Int32 und Int64 Items - benötigt $iIntType um gesetzt werden zu können

Bemerkungen

Gibt ein Array zurück welches jedes Element maximal einmal enhält.

Standardmäßig ist $iCount auf $ARRAYUNIQUE_COUNT (1) gesetzt und die Anzahl im Array wird im Element [0] gesetzt. Wird für $iCount $ARRAYUNIQUE_NOCOUNT (0) verwendet, so befindet sich in [0] nicht die Anzahl der Einträge, sondern der 1. Wert.

Die Funktion kann einen schnellen Algorithmus verwenden, solange die zu untersuchenden Elemente keine Int64-Werte enthalten (z. B. 64-Bit-Integer, Handles, Zeiger). Wenn diese Werte vorhanden sind, muss die Funktion einen langsameren Algorithmus verwenden. Wenn man den Parameter $iIntType einstellen, wird das Funktionsverhalten wie folgt geändert:

$ARRAYUNIQUE_AUTO (0) (Standard)    : Wenn das erste Item kein Integer ist, läuft der schnelle Algorithmus. Es wird ein Fehler zurückgegeben, wenn Int64-Items gefunden werden.
    : Wenn das erste Item ein Integer ist, wird der relevante FORCE32 / 64-Wert eingesetzt.
$ARRAYUNIQUE_FORCE32 (1)     : Erzwingt alle Integer auf Int32. Es läuft ein schneller Algorithmus. Es wird ein Fehler zurückgegeben, wenn Int64-Items gefunden werden.
$ARRAYUNIQUE_FORCE64 (2)     : Erzwingt alle Integer auf Int64. Es läuft ein langsamer Algorithmus. Es wird ein Fehler zurückgegeben, wenn Int32-Items gefunden werden.
$ARRAYUNIQUE_MATCH (3)         : 0x00000123 und 0x0123 betrachten den gleichen Wert. Nur der zuerst aufgetretende wird zurückgegeben. Es läuft ein langsamen Algorithmus.
$ARRAYUNIQUE_DISTINCT (4)    : 0x00000123 und 0x0123 werden als ausgedrückt betrachtet. Es werden beide zurückgegeben. Es läuft ein langsamen Algorithmus.

Die Abweichung von der Standardeinstellung $ARRAYUNIQUE_AUTO ist nur erforderlich, wenn bekannt ist oder vermutet wird, dass Int64-Werte untersucht werden. Die Anforderung, einen langsameren Algorithmus zu verwenden, wenn es um Int64-Werte geht, ist eine Beschränkung des Scripting.Dictionary-Objekts, das innerhalb der Funktion verwendet wird, nicht von AutoIt selbst.

Verwandte Funktionen

_ArrayMax, _ArrayMin

Beispiel

Beispiel 1

#include <Array.au3>

Local $aArray[10] = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] ; Erstellt ein 1D Array, welches doppelte Werte enthält.
_ArrayDisplay($aArray, "$aArray") ;Zeigt das Array
Local $aNewArray = _ArrayUnique($aArray) ; Standardparameter verwenden
_ArrayDisplay($aNewArray, "$aNewArray zeigt die erste Dimension von $aArray") ;Zeigt das Array

Beispiel 2

; Deklariert ein 2D Array, welches doppelte Werte enthält.
; _ArrayUnique ist zu verwenden, um ein neues Array zu erstellen, welches jeden Wert maximal einmal enthält.

#include <Array.au3>

Local $aArray[6][2] = [[1, "A"], [2, "B"], [3, "C"], [1, "A"], [2, "B"], [3, "C"]]
_ArrayDisplay($aArray, "2D") ; zeigt das aktuelle Array
Local $aArrayUnique = _ArrayUnique($aArray) ; Standardparameter verwenden um ein Array der ersten Spalte zu erstellen
_ArrayDisplay($aArrayUnique, "$aNewArray zeigt die erste Dimension von $aArray") ; Zeigt das Array

$aArrayUnique = _ArrayUnique($aArray, 1) ; Erstellt ein Array aus der zweiten Spalte
_ArrayDisplay($aArrayUnique, "$aNewArray zeigt die zweite Dimension von $aArray") ; Zeigt das Array