Zum Inhalt springen

Wörterbuch- und Array-Funktionen in Jitterbit Studio

Einführung

Wörterbuch- und Array-Funktionen bieten Speicherstrukturen für Informationen in Skripten. Weitere Funktionen, die mit Arrays verwendet werden können, finden Sie unter Verwandte Funktionen im Seitenpanel.

Unterschied zwischen Arrays und Wörterbüchern

Obwohl Arrays und Wörterbücher sich in vielen Aspekten als Methode zur Speicherung von Informationen ähneln, unterscheiden sie sich in diesen wichtigen Merkmalen:

  • Arrays
    • Elemente sind geordnet
    • Elemente werden nach Position abgerufen
  • Wörterbücher
    • Elemente werden ohne Rücksicht auf die Reihenfolge gespeichert und haben keine inhärente Ordnung
    • Elemente werden über einen Schlüssel abgerufen

Die Syntax zum Festlegen und Abrufen eines Elements ist ähnlich (beide können die Klammernotation verwenden), aber Arrays haben keine Schlüssel, die Elementen zugeordnet sind, und müssen alle Elemente sequenziell speichern, ohne Lücken. Wörterbücher können spärlich besetzt sein, mit Schlüsseln, die nur nach Bedarf gefüllt werden.

Welches man verwendet, hängt von der Art der Informationen ab. Wörterbücher eignen sich für Informationen, die unterschiedlich abgerufen werden. Arrays sind oft besser für geordnete Mengen geeignet.

Werte in Arrays und Wörterbüchern festlegen und abrufen

// Example of an array
$org.lookup.currency = Array();
$org.lookup.currency[1]="USD";
$org.lookup.currency[2]="EUR";

// currency will be "USD"
currency = $org.lookup.currency[1];

// Example of a dictionary
$common.dictionary.message = Dict();
AddToDict($common.dictionary.message, 'OP_START', 'Start');
AddToDict($common.dictionary.message, 'OP_END', 'End');
AddToDict($common.dictionary.message, 'API_PARMS', 'API Parameters');

// message will be "API Parameters"
message = $common.dictionary.message['API_PARMS'];

Werte in Wörterbüchern und Arrays suchen

Für Wörterbücher ermöglicht die Funktion HasKey zu testen, ob ein Schlüssel vorhanden ist. Für ein Array kann man die Funktion FindValue auf ähnliche Weise verwenden, indem man zwei Instanzen des Arrays an die Funktion übergibt:

arr = {1, 2, 3};
value = 1;
t = (FindValue(value, arr, arr) == value);
// t will be 1 (true)

value = 4;
t = (FindValue(value, arr, arr) == value);
// t will be 0 (false)

AddToDict

Deklaration

bool AddToDict(dictionary dict, string key, type arg)

Syntax

AddToDict(<dict>, <key>, <arg>)

Erforderliche Parameter

  • dict: Ein vorhandenes Wörterbuch
  • key: Schlüssel, der im Wörterbuch verwendet werden soll
  • arg: Wert, der unter diesem Schlüssel eingefügt werden soll

Beschreibung

Fügt einen Wert zu einem Wörterbuch für einen bestimmten Schlüssel hinzu.

Der Schlüssel muss ein String sein oder eine String-Darstellung haben, wobei Null-Schlüssel nicht zulässig sind. Jeder Wert ist zulässig, auch Null-Werte.

Gibt true zurück, wenn der Wert hinzugefügt wurde und der neue Schlüssel zum Wörterbuch hinzugefügt wurde, oder false, wenn der Schlüssel bereits vorhanden war und der Wert unter diesem Schlüssel stattdessen aktualisiert wurde. Wenn das erste Argument nicht definiert ist oder kein Wörterbuch ist, wird es vor dem Hinzufügen des Werts zu einem leeren Wörterbuch initialisiert.

Siehe auch die Funktion Dict.

Beispiele

// Initialize a dictionary prior to use
d = Dict();


// Adds a value to a dictionary "d" if a key doesn't already exist
If(!HasKey(d, "key"), AddToDict(d, "key", "value"));

// To directly assign a key-value, use this syntax:
d["key"] = "value";

Warnung

Die Verwendung eines Null-Schlüssels führt zu einem Fehler und stoppt die Ausführung eines Vorgangs.

Array

Deklaration

array Array()

Syntax

Array()

Beschreibung

Erstellt ein leeres Array. Obwohl Arrays vor der Verwendung nicht initialisiert werden müssen, kann diese Methode verwendet werden, um explizit zu sein oder ein bereits vorhandenes Array zurückzusetzen. Arrays sind nullbasiert, und Werte werden über Indizes abgerufen.

Beispiele

// Create an empty array and set values
arr = Array();
arr[0] = "value1";
arr[1] = "value2";

// Create an array and set the first value directly:
arr2[0] = "value";

// Arrays can be created with { } syntax:
arr3 = {};

Collection

Deklaration

array Collection()

Syntax

Collection()

Beschreibung

Ein Alias für Array. Siehe die Funktion Array.

CollectValues

Deklaration

array CollectValues(dictionary dict, array names)

Syntax

CollectValues(<dict>, <names>)

Erforderliche Parameter

  • dict: Ein vorhandenes Wörterbuch
  • names: Ein Array von Schlüsseln, die im Wörterbuch nachgeschlagen werden sollen

Beschreibung

Gibt ein Array zurück, das die Werte enthält, die den Namen im Argument-Array entsprechen, in der gleichen Reihenfolge wie die Schlüssel im Array.

Beispiele

// Retrieve a map from a source instance
map = GetSourceInstanceMap([Values$Value.]);
names = Array();
names[0] = "Attr1";
names[1] = "Attr2";
// Array containing the values of
// the attributes named in the names array
values = CollectValues(map, names);

Dict

Deklaration

dictionary Dict()

Syntax

Dict()

Beschreibung

Erstellt ein leeres Wörterbuch. Ein Wörterbuch ist eine Sammlung von Name-Wert-Paaren, bei denen der Wert basierend auf einem Zeichenfolgenschlüssel abgerufen wird. Jeder Wert ist zulässig, auch Nullwerte. Der Schlüssel muss eine Zeichenfolge sein oder eine Zeichenfolgendarstellung haben. Nullschlüssel sind nicht zulässig. Siehe auch die Funktion AddToDict.

Warnung

Wörterbücher müssen vor der Verwendung initialisiert werden.

Warnung

Die Verwendung eines Nullschlüssels führt zu einem Fehler und stoppt die Ausführung eines Vorgangs.

Beispiele

// Creating a dictionary "myDictionary"
myDictionary = Dict();

// Assigning a value ("text") to the key "myKey"
myDictionary["myKey"] = "text";
// Using the AddToDict function instead
AddToDict(myDictionary, "myKey", "text");

GetKeys

Deklaration

array GetKeys(dictionary dict)

Syntax

GetKeys(<dict>)

Erforderliche Parameter

  • dict: Ein vorhandenes Wörterbuch

Beschreibung

Gibt ein Array der Schlüssel in einem Wörterbuch zurück. Das Argument muss ein vorhandenes Wörterbuch sein.

Beispiele

// Retrieving the keys from the dictionary "myDictionary"
// using GetKeys and then looping through the array
// to retrieve all the values in the dictionary
// and writing them to the Operation Log
keys = GetKeys(myDictionary);
i=0;
While(i < Length(keys),
 WriteToOperationLog(myDictionary[keys[i]]);
 i++;
);

In der Praxis

GetSourceAttrNames

Deklaration

array GetSourceAttrNames(node n)

Syntax

GetSourceAttrNames(<n>)

Erforderliche Parameter

  • n: Ein Zeichenfolgenverweis-Pfadausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Array zurück, das die Namen der Attribute eines Knotens in der Reihenfolge enthält, in der die Attribute im Knoten angezeigt werden.

Vergleichen Sie mit der Funktion GetSourceInstanceMap, die eine Zuordnung der Schlüssel (die Attribute) und Werte für einen Knoten zurückgibt.

Um einen n-Pfad in die Funktion einzugeben, ziehen Sie den gewünschten XML-Knotenordner von der Registerkarte Quellobjekte der Skriptkomponentenpalette in das Skript, um seinen qualifizierten Pfad an der Cursorposition einzufügen, oder geben Sie seinen Verweispath manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.

Vorsicht

Bei Verwendung von Agents Version 11.52 und früher kann diese Funktion FillDataElements() failed oder DataElement::setCRData() failed Fehler zurückgeben, wenn sie gegen flache Datenstruktur Knoten verwendet wird.

Beispiele

// Appends all the attributes together without having
// to explicitly reference their source data elements
map = GetSourceInstanceMap([Values$Value.]);
names = GetSourceAttrNames([Values$Value.]);
i = 0;
n = Length(names);
str = "";

While(i < n,
  str = str + map[names[i]];
  i++;
);

GetSourceElementNames

Deklaration

array GetSourceElementNames(node n)

Syntax

GetSourceElementNames(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Array mit den Namen der einfachen Unterelemente für einen Knoten in der Reihenfolge zurück, in der die Attribute im Knoten angezeigt werden.

Vergleichen Sie mit der Funktion GetSourceInstanceElementMap, die eine Zuordnung eines Knotens zurückgibt.

Um einen n-Pfad in die Funktion einzugeben, ziehen Sie den gewünschten XML-Knotenordner aus der Registerkarte Source Objects der Skriptkomponentenpalette in das Skript, um seinen qualifizierten Pfad an der Position des Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.

Vorsicht

Bei Verwendung von Agent-Versionen 11.52 und früher kann diese Funktion FillDataElements() failed oder DataElement::setCRData() failed Fehler zurückgeben, wenn sie gegen Flat-Data-Structure Knoten verwendet wird.

Beispiele

// Appends all the attributes together without having
// to explicitly reference their source data elements
map = GetSourceInstanceElementMap([Values$Value.]);
names = GetSourceElementNames([Values$Value.]);

// The values as an array of values from the sub-elements
values = CollectValues(map, names);

GetSourceInstanceArray

Deklaration

array GetSourceInstanceArray(node n)

Syntax

GetSourceInstanceArray(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Array mit dem Attributwert aus einem Elementknoten zurück. Der Wert im Array wird mit dem Namen des Attributs gekennzeichnet und kann entweder nach seinem Index oder nach seinem Namen wie in einem Dictionary-Datenelement abgerufen werden.

Als Alternative zu dieser Funktion siehe GetSourceInstanceMap.

Um einen n-Pfad in die Funktion einzugeben, ziehen Sie den gewünschten XML-Knotenordner aus der Registerkarte Source Objects der Skriptkomponentenpalette in das Skript, um seinen qualifizierten Pfad an der Position des Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.

Vorsicht

Bei Verwendung von Agent-Versionen 11.52 und früher kann diese Funktion FillDataElements() failed oder DataElement::setCRData() failed Fehler zurückgeben, wenn sie gegen Flat-Data-Structure Knoten verwendet wird.

Beispiele

arr = GetSourceInstanceArray([Values$Value.]);
// To retrieve the value of the "Attr1" attribute:
// If "Attr1" is the first attribute name, you can use:
v = arr[0];
// Or, you can use the name "Attr1":
v = arr["Attr1"];

GetSourceInstanceElementArray

Deklaration

array GetSourceInstanceElementArray(node n)

Syntax

GetSourceInstanceElementArray(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Array mit dem Unterelementwert aus einem Elementknoten zurück. Der Wert im Array wird mit dem Namen des Unterelements gekennzeichnet und kann entweder nach seinem Index oder nach seinem Namen wie im Dictionary-Datenelement abgerufen werden.

Als Alternative zu dieser Funktion siehe GetSourceInstanceElementMap.

Um einen n-Pfad in die Funktion einzugeben, ziehen Sie den gewünschten XML-Knotenordner aus der Registerkarte Source Objects der Skriptkomponentenpalette in das Skript, um seinen qualifizierten Pfad an der Position des Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.

Vorsicht

Bei Verwendung von Agent-Versionen 11.52 und früher kann diese Funktion FillDataElements() failed oder DataElement::setCRData() failed Fehler zurückgeben, wenn sie gegen Flat-Data-Structure Knoten verwendet wird.

Beispiele

arr = GetSourceInstanceElementMap([Values$Value.]);
// To retrieve the value of the "e1" sub-element:
// If "el" is the first sub-element, you can use:
v = arr[0];
// Or, you can use the name "e1":
v = arr["e1"];

GetSourceInstanceMap

Deklaration

dictionary GetSourceInstanceMap(node n)

Syntax

GetSourceInstanceMap(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Wörterbuch (Map) zurück, das den Attributnamen und seinen Wert aus einem Elementknoten enthält.

Als Alternative zu dieser Funktion siehe GetSourceInstanceArray.

Um einen n-Pfad in die Funktion einzugeben, ziehen Sie den gewünschten XML-Knotenordner von der Registerkarte Source Objects der Skriptkomponentenpalette in das Skript, um seinen qualifizierten Pfad an der Cursorposition einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.

Vorsicht

Bei Verwendung von Agent-Versionen 11.52 und früher kann diese Funktion FillDataElements() failed oder DataElement::setCRData() failed Fehler zurückgeben, wenn sie gegen flache Datenstruktur Knoten verwendet wird.

Beispiele

map = GetSourceInstanceMap([Values$Value.]);
v = map["Attr1"];
// Returns the value of the "Attr1" attribute

GetSourceInstanceElementMap

Deklaration

dictionary GetSourceInstanceElementMap(node n)

Syntax

GetSourceInstanceElementMap(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Wörterbuch (Map) zurück, das den Wert des Unterelements aus einem Elementknoten enthält.

Als Alternative zu dieser Funktion siehe GetSourceInstanceElementArray.

Um einen n-Pfad in die Funktion einzugeben, ziehen Sie den gewünschten XML-Knotenordner von der Registerkarte Source Objects der Skriptkomponentenpalette in das Skript, um seinen qualifizierten Pfad an der Cursorposition einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.

Vorsicht

Bei Verwendung von Agent-Versionen 11.52 und früher kann diese Funktion FillDataElements() failed oder DataElement::setCRData() failed Fehler zurückgeben, wenn sie gegen flache Datenstruktur Knoten verwendet wird.

Beispiele

map = GetSourceInstanceElementMap([Values$Value.]);
v = map["e1"];
// Returns the value of the "e1" sub-element

HasKey

Deklaration

bool HasKey(dictionary dict, string key)

Syntax

HasKey(<dict>, <key>)

Erforderliche Parameter

  • dict: Ein vorhandenes Wörterbuch
  • key: Ein Schlüssel, der im Wörterbuch geprüft werden soll

Beschreibung

Prüft, ob ein Wörterbuch einen angegebenen Schlüssel enthält. Gibt false zurück, wenn das erste Argument kein Wörterbuch ist oder wenn der Schlüssel nicht gefunden wurde. Eine entsprechende Funktion, die für Arrays funktioniert, finden Sie in den Beispielen der Funktion FindValue.

Beispiele

// Update the value in a dictionary "myDictionary"
// only if the key already exists
If(HasKey(myDictionary, "key"),
    myDictionary["key"] = "value");

<div markdown="1" class="conf-macro output-inline" align="center" hasbody="false" macro-name="backtotop">

[[Back to top]](#top)

</div>


## `Map` {: #dictionaryandarrayfunctions-map }

### Declaration {: #declaration }
dictionary Map()
### Syntax {: #syntax }
Map()
### Description {: #description }

Ein Alias für `Dict`. Siehe die Funktion `Dict`.

<div markdown="1" class="conf-macro output-inline" align="center" hasbody="false" macro-name="backtotop">

[[Back to top]](#top)

</div>


## `MapCache` {: #dictionaryandarrayfunctions-mapcache }

### Declaration {: #declaration }
string MapCache(dictionary dict, string key, string value)
### Syntax {: #syntax }
MapCache(, , )
#### Required parameters {: #required-parameters }

-   **`dict`:** Ein vorhandenes Wörterbuch
-   **`key`:** Ein Schlüssel, der im Wörterbuch überprüft werden soll
-   **`value`:** Ein Wert, der verwendet (und gespeichert) werden soll, wenn der Schlüssel nicht im Wörterbuch vorhanden ist

### Description {: #description }

Diese Funktion speichert ein Schlüssel-Wert-Paar in einem Wörterbuch. Wenn der Schlüssel bereits im Wörterbuch vorhanden ist, wird der entsprechende Wert zurückgegeben. Andernfalls wird das dritte Argument ausgewertet und dieser Wert wird im Wörterbuch für den Schlüssel gespeichert.

### Examples {: #examples }
// Creating a dictionary "myDictionary" // and caching values in it, // if they don't already exist myDictionary = Dict(); i=0; a=MapCache(myDictionary, "key1", ++i); b=MapCache(myDictionary, "key2", ++i); c=MapCache(myDictionary, "key1", ++i); result = i; // The result will be // result=2, a=1, b=2, and c=1 // as c's value will be retrieved // rather than incremented
<div markdown="1" class="conf-macro output-inline" align="center" hasbody="false" macro-name="backtotop">

[[Back to top]](#top)

</div>


## `ReduceDimension` {: #dictionaryandarrayfunctions-reducedimension }

### Declaration {: #declaration }
array ReduceDimension(array arrayMultiD)
### Syntax {: #syntax }
ReduceDimension()
#### Required parameters {: #required-parameters }

-   **`arrayMultiD`:** Ein mehrdimensionales Array

### Description {: #description }

Bei einem mehrdimensionalen Array mit _n_ Dimensionen gibt die Funktion ein Array mit _n-1_ Dimensionen zurück. Die niedrigste Dimension des Eingabearrays wird entfernt und ihre Elemente werden auf die nächste Ebene übertragen.

### Examples {: #examples }

prices = ReduceDimension(orders\(company.order#.detail#.price); // If orders\)company.order#.detail#.price // is a 2-dimensional source data element array, // the function will return a one-dimensional array

a = {{"0_0", "0_1"}, {"1_0", "1_1"}}; result = ReduceDimension(a); // result will be {0_0, 0_1, 1_0, 1_1}

<div markdown="1" class="conf-macro output-inline" align="center" hasbody="false" macro-name="backtotop">

[[Back to top]](#top)

</div>


## `RemoveKey` {: #dictionaryandarrayfunctions-removekey }

### Declaration {: #declaration }
bool RemoveKey(dictionary dict, string key)
### Syntax {: #syntax }
RemoveKey(, )
#### Required parameters {: #required-parameters }

-   **`dict`:** Ein vorhandenes Wörterbuch
-   **`key`:** Ein Schlüssel, der im Wörterbuch überprüft werden soll

### Description {: #description }

Entfernt ein Schlüssel-Wert-Paar mit einem bestimmten Schlüssel aus einem Wörterbuch. Der Schlüssel muss ein String sein oder eine String-Darstellung haben, und Nullwerte sind nicht zulässig. Gibt `true` zurück, wenn das Schlüssel-Wert-Paar entfernt wurde, und `false`, wenn der Schlüssel nicht vorhanden war.

### Examples {: #examples }
// Removes a key-value pair if it // exists in dictionary "myDictionary" If(HasKey(myDictionary, "key"), RemoveKey(myDictionary, "key"));
<div markdown="1" class="conf-macro output-inline" align="center" hasbody="false" macro-name="backtotop">

[[Back to top]](#top)

</div>


## `SortArray` {: #dictionaryandarrayfunctions-sortarray }

### Declaration {: #declaration }
void SortArray(array arrayToSort[, bool isAscending])

void SortArray(array arrayToSort, int index[, bool isAscending])

### Syntax {: #syntax }
SortArray([, ])

SortArray(, [, ])

#### Required parameters {: #required-parameters }

-   **`arrayToSort`:** Ein zu sortierendes Array
-   **`index`:** Bei mehrdimensionalen Arrays der Index des zu sortierenden Arrays (Standard 0)

#### Optional parameters {: #optional-parameters }

-   **`isAscending`:** Wenn das Array in aufsteigender Reihenfolge sortiert werden soll (Standard)

### Description {: #description }

Sortiert ein Array nach Referenz. Der Rückgabewert ist nicht definiert und sollte ignoriert werden.

In der ersten Form gibt der zweite Parameter (optional) die Sortierreihenfolge an.

In der zweiten Form sortiert die Funktion bei mehrdimensionalen Arrays das Array nach einem nullgestützten Index, der im zweiten Parameter (erforderlich) angegeben ist. In der zweiten Form gibt das dritte Argument (optional) die Sortierreihenfolge an.

Die Standard-Sortierreihenfolge ist in beiden Formularen aufsteigend.

Nach der Rückgabe der Funktion wird das Array an Ort und Stelle sortiert. Falls angegeben, wird es nach dem Index sortiert.

Das mehrfache Sortieren desselben Arrays ist möglich, indem die SortArray-Funktion wiederholt angewendet wird.

Zur Fehlerbehebung siehe SortArray sortiert Dateinamen lexikografisch, nicht chronologisch im Leitfaden zur Fehlerbehebung bei Operationen.

Beispiele

// Sorting a one-dimensional array
arr1 = {"Carol", "Bob", "Alice"};
SortArray(arr1);
// arr1 is now {Alice, Bob, Carol}

// Sorting a two-dimensional array
arr2 = {{"a", 20, 1}, {"bc", 7, 12}, {"x", 20, 13}, {"d", 5, 4}};

// Sort arr2, order by third column, descending
SortArray(arr2, 2, false);
// arr2 is now {{x, 20, 13}, {bc, 7, 12}, {d, 5, 4}, {a, 20, 1}}

// Sort arr2, order by second column, ascending
SortArray(arr2, 1);
// arr2 is now {{d, 5, 4}, {bc, 7, 12}, {x, 20, 13}, {a, 20, 1}