Zum Inhalt springen

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

Einführung

Wörterbuch- und Array-Funktionen stellen Speicherstrukturen für Informationen in Scripts bereit. Weitere Funktionen, die mit Arrays verwendet werden können, finden Sie unter Verwandte Funktionen in der Seitenleiste.

Unterschied zwischen Arrays und Wörterbüchern

Obwohl Arrays und Wörterbücher in vielerlei Hinsicht sehr ähnlich sind, was die Methode zum Speichern von Informationen angeht, 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 Reihenfolge gespeichert und haben keine intrinsische Reihenfolge
    • Elemente werden nach Schlüssel abgerufen

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

Welches zu verwenden ist, hängt von der Art der Informationen ab. Wörterbücher eignen sich für Informationen, die in der Art und Weise, wie sie abgerufen werden, variieren. Arrays sind oft besser für geordnete Mengen geeignet.

Festlegen und Abrufen von Werten in Arrays und Wörterbüchern

// 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'];

Suchen von Werten in Wörterbüchern und Arrays

Für Wörterbücher gilt: HasKey Mit dieser Funktion können Sie testen, ob ein Schlüssel vorhanden ist. Für ein Array können Sie die FindValue Funktion auf ähnliche Weise, 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

Erklärung

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

Syntax

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

Erforderliche Parameter

  • dict: Ein vorhandenes Wörterbuch
  • key: Im Wörterbuch zu verwendender Schlüssel
  • arg: Wert, der an diesem Schlüssel platziert werden soll

Beschreibung

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

Der Schlüssel muss eine Zeichenfolge sein oder eine Zeichenfolgendarstellung haben, wobei Nullschlüssel nicht zulässig sind. Jeder Wert ist zulässig, auch Nullwerte.

Gibt zurück true wenn der Wert hinzugefügt und der neue Schlüssel dem Wörterbuch hinzugefügt wurde oder false wenn der Schlüssel bereits vorhanden war und der Wert an diesem Schlüssel stattdessen aktualisiert wurde. Wenn das erste Argument nicht definiert ist oder kein Wörterbuch ist, wird es mit einem leeren Wörterbuch initialisiert, bevor der Wert hinzugefügt wird.

Siehe auch die Dict() Funktion.

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";

`WARNING: Use of a null key will cause an error and stop the execution of an operation.

Array

Erklärung

array Array()

Syntax

Array()

Beschreibung

Erstellt ein leeres Array. Obwohl Arrays vor der Verwendung nicht initialisiert werden müssen, kann diese Methode explizit verwendet werden oder um 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

Erklärung

array Collection()

Syntax

Collection()

Beschreibung

Ein Alias für Array Siehe die Funktion Array.

CollectValues

Erklärung

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 Argumentarray entsprechen, und zwar in derselben 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

Erklärung

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üsselwert 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 AddToDict() Funktion.

Warnung

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

Warnung

Die Verwendung eines Nullschlüssels verursacht einen Fehler und stoppt die Ausführung einer Operation.

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

Erklärung

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

GetSourceAttrNames

Erklärung

array GetSourceAttrNames(node n)

Syntax

GetSourceAttrNames(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck 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 mit der Funktion GetSourceInstanceMap das eine Zuordnung der Schlüssel (der Attribute) und Werte für einen Knoten zurückgibt.

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

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

Erklärung

array GetSourceElementNames(node n)

Syntax

GetSourceElementNames(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck 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 Karte eines Knotens zurückgibt.

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

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

Erklärung

array GetSourceInstanceArray(node n)

Syntax

GetSourceInstanceArray(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck 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 seinen Namen wie in einem Wörterbuchdatenelement abgerufen werden.

Alternative zu dieser Funktion finden Sie unter GetSourceInstanceMap.

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

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

Erklärung

array GetSourceInstanceElementArray(node n)

Syntax

GetSourceInstanceElementArray(<n>)

Erforderliche Parameter

  • n: Ein String-Referenzpfadausdruck 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 gekennzeichnet und kann entweder über seinen Index oder seinen Namen wie im Wörterbuchdatenelement abgerufen werden.

Alternative zu dieser Funktion finden Sie unter GetSourceInstanceElementMap.

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

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

Erklärung

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 eine n Pfad in die Funktion einfügen, doppelklicken Sie auf den gewünschten XML-Knotenordner, um dessen qualifizierten Pfad an der Position Ihres Cursors einzufügen. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von XML-Knotenpfaden.

Beispiele

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

GetSourceInstanceElementMap

Erklärung

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 eine n Pfad in die Funktion einfügen, doppelklicken Sie auf den gewünschten XML-Knotenordner, um dessen qualifizierten Pfad an der Position Ihres Cursors einzufügen. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von XML-Knotenpfaden.

Beispiele

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

HasKey

Erklärung

bool HasKey(dictionary dict, string key)

Syntax

HasKey(<dict>, <key>)

Erforderliche Parameter

  • dict: Ein vorhandenes Wörterbuch
  • key: Ein Schlüssel zum Nachschlagen im Wörterbuch

Beschreibung

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

Beispiele

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

Map

Erklärung

dictionary Map()

Syntax

Map()

Beschreibung

Ein Alias für Dict Siehe die Funktion Dict.

MapCache

Erklärung

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

Syntax

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

Erforderliche Parameter

  • dict: Ein vorhandenes Wörterbuch
  • key: Ein Schlüssel zum Nachschlagen im Wörterbuch
  • value: Ein zu verwendender (und zu speichernder) Wert, wenn der Schlüssel nicht im Wörterbuch enthalten ist

Beschreibung

Diese Funktion speichert ein Schlüssel/Wert-Paar in einem Wörterbuch zwischen. 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.

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

Erklärung

array ReduceDimension(array arrayMultiD)

Syntax

ReduceDimension(<arrayMultiD>)

Erforderliche Parameter

  • arrayMultiD: Ein mehrdimensionales Array

Beschreibung

Bei einem mehrdimensionalen Array mit n Dimensionen gibt die Funktion ein Array mit n-1 Dimensionen zurück. Die niedrigste Dimension des Eingabearrays verschwindet und ihre Mitglieder werden in der Dimension der nächsten Ebene 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

Erklärung

bool RemoveKey(dictionary dict, string key)

Syntax

RemoveKey(<dict>, <key>)

Erforderliche Parameter

  • dict: Ein vorhandenes Wörterbuch
  • key: Ein Schlüssel zum Nachschlagen im Wörterbuch

Beschreibung

Entfernt ein Key-Value Paar mit einem bestimmten Schlüssel aus einem Wörterbuch. Der Schlüssel muss eine Zeichenfolge sein oder eine Zeichenfolgendarstellung haben, und Nullwerte sind nicht zulässig. Gibt zurück true wenn das Key-Value 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

Erklärung

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, nach dem sortiert werden soll (Standard 0)

Optionale Parameter

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

Beschreibung

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 für mehrdimensionale Arrays das Array nach einem nullbasierten Index, der im zweiten Parameter angegeben ist (erforderlich). In der zweiten Form gibt das dritte Argument (optional) die Sortierreihenfolge an.

Die Standardsortierreihenfolge ist in beiden Formen aufsteigend.

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

Mehrfaches Sortieren desselben Arrays ist möglich, indem Sie die SortArray Funktion wiederholt.

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}