Zum Inhalt springen

Wörterbuch- und Array-Funktionen im Jitterbit Design Studio

Einführung

Wörterbuch- und Array-Funktionen bieten Speicherstrukturen für Informationen in Skripten. Siehe die Verwandten Funktionen im Seitenpanel für zusätzliche Funktionen, die mit Arrays verwendet werden können.

Unterschied zwischen Arrays und Wörterbüchern

Obwohl sie in vielerlei Hinsicht ähnlich sind, unterscheiden sich Arrays und Wörterbücher in diesen wichtigen Merkmalen:

  • Arrays
    • Elemente sind geordnet
    • Elemente werden nach Position abgerufen
  • Wörterbücher
    • Elemente werden ohne Berücksichtigung der Reihenfolge gespeichert und haben keine intrinsische Reihenfolge
    • Elemente werden über einen Schlüssel abgerufen

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

Welche man verwenden sollte, hängt von der Art der Informationen ab. Wörterbücher eignen sich für Informationen, die variieren, wie sie abgerufen werden. Arrays sind oft besser für geordnete Mengen.

Werte in Arrays und Wörterbüchern setzen 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 finden

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

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 an diesem Schlüssel platziert werden soll

Beschreibung

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

Der Schlüssel muss eine Zeichenkette sein oder eine Zeichenketten-Darstellung haben, wobei null-Schlüssel nicht erlaubt sind. Jeder Wert ist erlaubt, 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 existierte und der Wert an 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 Wertes auf ein leeres 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 einer Operation.

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 mithilfe von 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

Declaration

array CollectValues(dictionary dict, array names)

Syntax

CollectValues(<dict>, <names>)

Required parameters

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

Description

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

Examples

// 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

Declaration

dictionary Dict()

Syntax

Dict()

Description

Erstellt ein leeres Wörterbuch. Ein Wörterbuch ist eine Sammlung von Namens-Wert-Paaren, bei denen der Wert basierend auf einem String-Schlüsselwert abgerufen wird. Jeder Wert ist erlaubt, auch null-Werte. Der Schlüssel muss ein String sein oder eine String-Darstellung haben. Null-Schlüssel sind nicht erlaubt. Siehe auch die Funktion AddToDict().

Warnung

Wörterbücher müssen initialisiert werden, bevor sie verwendet werden.

Warnung

Die Verwendung eines null-Schlüssels führt zu einem Fehler und stoppt die Ausführung einer Operation.

Examples

// 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

Declaration

array GetKeys(dictionary dict)

Syntax

GetKeys(<dict>)

Required parameters

  • dict: Ein vorhandenes Wörterbuch

Description

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++;
);

GetSourceAttrNames

Deklaration

array GetSourceAttrNames(node n)

Syntax

GetSourceAttrNames(<n>)

Erforderliche Parameter

  • n: Ein String-Verweis-Pfad-Ausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

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

Vergleichen Sie dies 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, doppelklicken Sie auf den gewünschten XML-Knotenordner, um seinen qualifizierten Pfad an der Stelle Ihres Cursors einzufügen. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von XML-Knotenpfaden.

Vorsicht

Bei Verwendung von Agenten der Version 11.52 und früher kann diese Funktion FillDataElements() fehlgeschlagen oder DataElement::setCRData() fehlgeschlagen Fehler zurückgeben, wenn sie gegen flache Datenstrukturknoten 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-Verweis-Pfad-Ausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Array zurück, das die Namen der einfachen Unterelemente für einen Knoten in der Reihenfolge enthält, in der die Attribute im Knoten erscheinen.

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

Um einen n-Pfad in die Funktion einzugeben, doppelklicken Sie auf den gewünschten XML-Knotenordner, um seinen qualifizierten Pfad an der Stelle Ihres Cursors einzufügen. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von XML-Knotenpfaden.

Vorsicht

Bei Verwendung von Agenten der Version 11.52 und früher kann diese Funktion FillDataElements() failed oder DataElement::setCRData() failed-Fehler zurückgeben, wenn sie gegen flache Datenstrukturknoten 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-Verweis-Pfad-Ausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Array zurück, das den Wert des Attributs aus einem Elementknoten enthält. Der Wert im Array ist mit dem Namen des Attributs gekennzeichnet und kann entweder über seinen Index oder über seinen Namen wie in einem Wörterbuch-Datenelement abgerufen werden.

Als Alternative zu dieser Funktion siehe GetSourceInstanceMap.

Um einen n-Pfad in die Funktion einzugeben, doppelklicken Sie auf den gewünschten XML-Knotenordner, um seinen qualifizierten Pfad an der Stelle Ihres Cursors einzufügen. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von XML-Knotenpfaden.

Vorsicht

Bei Verwendung von Agenten der Version 11.52 und früher kann diese Funktion FillDataElements() failed oder DataElement::setCRData() failed-Fehler zurückgeben, wenn sie gegen flache Datenstrukturknoten 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-Referenzpfad-Ausdruck zu einem Knoten in der aktuellen Transformation

Beschreibung

Gibt ein Array zurück, das den Wert des Unterelements aus einem Elementknoten enthält. Der Wert im Array ist mit dem Namen des Unterelements beschriftet und kann entweder über seinen Index oder über seinen Namen wie im Dictionary-Datenelement abgerufen werden.

Als Alternative zu dieser Funktion siehe GetSourceInstanceElementMap.

Um einen n-Pfad in die Funktion einzugeben, doppelklicken Sie auf den gewünschten XML-Knotenordner, um seinen qualifizierten Pfad an der Stelle Ihres Cursors einzufügen. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von XML-Knotenpfaden.

Vorsicht

Bei Verwendung von Agenten der Version 11.52 und früher kann diese Funktion FillDataElements() fehlgeschlagen oder DataElement::setCRData() fehlgeschlagen Fehler zurückgeben, wenn sie gegen flache Datenstrukturknoten 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-Referenzpfad-Ausdruck 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, doppelklicken Sie auf den gewünschten XML-Knotenordner, um seinen qualifizierten Pfad an der Stelle Ihres Cursors einzufügen. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von XML-Knotenpfaden.

Vorsicht

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

Beispiele

map = GetSourceInstanceMap([Values$Value.]);
v = map["Attr1"];
// Gibt den Wert des Attributs "Attr1" zurück

GetSourceInstanceElementMap

Deklaration

dictionary GetSourceInstanceElementMap(node n)

Syntax

GetSourceInstanceElementMap(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfad-Ausdruck 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, doppelklicken Sie auf den gewünschten XML-Knotenordner, um seinen qualifizierten Pfad an der Stelle Ihres Cursors einzufügen. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von XML-Knotenpfaden.

Vorsicht

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

Beispiele

map = GetSourceInstanceElementMap([Values$Value.]);
v = map["e1"];
// Gibt den Wert des "e1" Unterelements zurück

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 überprüft werden soll

Beschreibung

Überprüft, ob ein Wörterbuch einen bestimmten Schlüssel enthält. Gibt false zurück, wenn das erste Argument kein Wörterbuch ist oder wenn der Schlüssel nicht gefunden wurde. Für eine äquivalente Funktion, die für Arrays funktioniert, siehe die Beispiele der Funktion FindValue.

Beispiele

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

Map

Deklaration

dictionary Map()

Syntax

Map()

Beschreibung

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

MapCache

Deklaration

string MapCache(dictionary dict, string key, string value)

Syntax

MapCache(<dict>, <key>, <value>)

Erforderliche Parameter

  • 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

Beschreibung

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 im Wörterbuch für den Schlüssel gespeichert.

Beispiele

// 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

ReduceDimension

Deklaration

array ReduceDimension(array arrayMultiD)

Syntax

ReduceDimension(<arrayMultiD>)

Erforderliche Parameter

  • arrayMultiD: Ein mehrdimensionales Array

Beschreibung

Gegeben ein mehrdimensionales Array mit n Dimensionen, gibt die Funktion ein Array mit n-1 Dimensionen zurück. Die niedrigste Dimension des Eingangsarrays verschwindet, und ihre Mitglieder werden in die nächsthöhere Dimension gesammelt.

Beispiele

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}

RemoveKey

Deklaration

bool RemoveKey(dictionary dict, string key)

Syntax

RemoveKey(<dict>, <key>)

Erforderliche Parameter

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

Beschreibung

Entfernt ein Schlüssel-Wert-Paar mit einem bestimmten Schlüssel aus einem Wörterbuch. Der Schlüssel muss eine Zeichenkette sein oder eine Zeichenkettenrepräsentation haben, und null-Werte sind nicht erlaubt. Gibt true zurück, wenn das Schlüssel-Wert-Paar entfernt wurde, und false, wenn der Schlüssel nicht existierte.

Beispiele

// Removes a key-value pair if it
// exists in dictionary "myDictionary"
If(HasKey(myDictionary, "key"),
    RemoveKey(myDictionary, "key"));

SortArray

Deklaration

void SortArray(array arrayToSort[, bool isAscending])

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

Syntax

SortArray(<arrayToSort>[, <isAscending>])

SortArray(<arrayToSort>, <index>[, <isAscending>])

Erforderliche Parameter

  • arrayToSort: Ein zu sortierendes Array
  • index: Für mehrdimensionale Arrays, Index des Arrays, das sortiert werden soll (Standard 0)

Optionale Parameter

  • isAscending: Ob das Array in aufsteigender Reihenfolge sortiert werden soll (Standard)

Beschreibung

Sortiert ein Array durch Referenz. Der Rückgabewert ist undefiniert und sollte ignoriert werden.

Im ersten Format gibt der zweite Parameter (optional) die Sortierreihenfolge an.

Im zweiten Format sortiert die Funktion für mehrdimensionale Arrays das Array gemäß einem nullbasierten Index, der im zweiten Parameter (erforderlich) angegeben ist. Im zweiten Format gibt das dritte Argument (optional) die Sortierreihenfolge an.

Die Standard-Sortierreihenfolge ist in beiden Formaten aufsteigend.

Nachdem die Funktion zurückgegeben hat, wird das Array in-place sortiert. Wenn angegeben, wird es gemäß dem Index sortiert.

Mehrfache Sortierungen desselben Arrays sind möglich, indem die Funktion SortArray wiederholt angewendet wird.

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}