Array

Das Array ist ein nativer Datentyp zum Speichern von Gruppen zugehöriger Werte.

Ein Array in Netcool ® /Impact stellt eine heterogene Datengruppe dar, d. h., es kann Elemente beliebiger Kombinationen von Datentypen, einschließlich anderer Arrays und Kontexte, speichern. Die Daten in Arrays werden als nicht benannte Elemente und nicht als Elementvariablen gespeichert.

Die Zuweisung von Werten zu Arrays erfolgt in IPL unter Verwendung von geschweiften Klammern. Bei dieser Notation müssen Sie eine durch Kommas getrennte Liste in geschweifte Klammern einschließen. Die Werte können als Literale oder als Variablen mit zuvor in der Richtlinie definierten Werten angegeben werden:

arrayname = {element1, element2, elementn}
Achtung: Arrays in IPL und JavaScript sind nullbasiert, d. h., das erste Element im Array hat den Indexwert 0.

In JavaScript werden unter Verwendung der Notation mit eckigen Klammern Arraywerte als durch Kommas getrennte Folge von numerischen, booleschen oder Zeichenfolgeliteralen zugeordnet:

arrayname = [element1, element2, elementn]
Wichtig: Sie können ein Array beliebiger Größe erstellen, indem Sie seine Elemente manuell definieren. Der Import eines Arrays aus einer Datei ist nicht möglich. Ein Array kann nur in einem Array verwendet werden, wenn es sich um ein mehrdimensionales Array handelt.

Auf den Wert von Arrays wird über die Notation mit eckigen Klammern verwiesen. Bei dieser Notation müssen Sie den Namen des Arrays, gefolgt von der Indexnummer des Elements, in eckige Klammern einschließen. Verwenden Sie die folgende Syntax, um auf die Elemente eines eindimensionalen Arrays und eines mehrdimensionalen Arrays zuzugreifen:

arrayname[element index]
arrayname[first dimension element index][second dimension element index]
Wichtig:

Die Verwendung der for-in-Syntax für das Iterieren von Arrays wird nicht empfohlen. Die Verwendung von Length ist die empfohlene Methode zum Durchqueren des Inhalts eines Arrays, wie im folgenden Abschnitt dokumentiert: Länge eines Arrays suchen

Seit FP8 enthalten Systeme mit installierten NOI-Erweiterungen eine Änderung der Richtlinie NOI_UTILS, die eine neue Methode (applySQLSortAlg) zur Standard-Array-Klasse hinzufügt. Dies geschieht mit dem Konstruktor Array.prototype, der es ermöglicht, dass neue Eigenschaften und Methoden zum Objekt Array() hinzugefügt werden. Sobald NOI_UTILS von einer Richtlinie geladen wurde, verfügen alle Arrays über die neue Methode.

Der Zweck der for-in-Anweisung besteht darin, die Objekteigenschaften und -methoden aufzuzählen. Es werden jedoch auch übernommene Eigenschaften und Methoden aufgezählt, sodass die zusätzliche Methode zurückgegeben wird.

Die Änderung wirkt sich nur auf die Verwendung von for-in für JavaScript-Arrays aus. Die Funktion Length ist von der Änderung nicht betroffen.

Beispiele

Das folgende Beispiel zeigt ein eindimensionales Array in IPL:

MyArray = {"Hello, World!", 12345};
Log(MyArray[0] + ", " + MyArray[1]);

Das folgende Beispiel zeigt ein eindimensionales Array in JavaScript:

MyArray = ["Hello, World!", 12345];
Log(MyArray[0] + ", " + MyArray[1]);

Bei diesem Beispiel wird der folgende Text im Richtlinienprotokoll ausgegeben:

Hello.World!, 12345

Das folgende Beispiel zeigt ein zweidimensionales Array in IPL:

MyArray = {{"Hello, World!", 12345}, {"xyz", 78, 7, "etc"}};
Log(MyArray[0][0] + "." + MyArray[1][0]);

Das folgende Beispiel zeigt ein zweidimensionales Array in IPL:

MyArray = [["Hello, World!", 12345], ["xyz", 78, 7, "etc"]];
Log(MyArray[0][0] + "." + MyArray[1][0]);

Bei diesem Beispiel wird der folgende Text im Richtlinienprotokoll ausgegeben:

Hello,World!.xyz

Diese Beispielrichtlinie in IPL verwendet dasselbe zweidimensionale Array und gibt die Bezeichnung und den Wert eines Elements im Parserprotokoll aus:

MyArray = {{"Hello, World!", 12345}, {"xyz", 78, 7, "etc"}};
log("MyArray is " + MyArray);
log("MyArray Length is " + length(MyArray));
ArrayA = MyArray[0];
log("ArrayA is " + ArrayA + " Length is " + length(ArrayA));
i = 0;
While(i < length(ArrayA)) {
    log("ArrayA["+i+"] = " + ArrayA[i]);
    i = i+1;
}
ArrayB = MyArray[1];
log("ArrayB is " + ArrayB + " Length is " + length(ArrayB));
i = 0;
While(i < length(ArrayB)) {
    log("ArrayB["+i+"] = " + ArrayB[i]);
    i = i+1;
}

Diese Beispielrichtlinie in JavaScript verwendet dasselbe zweidimensionale Array und gibt die Bezeichnung und den Wert eines Elements im Parserprotokoll aus:

MyArray is [["Hello, World!", 12345], ["xyz", 78, 7, "etc"]]
MyArray Length is 2
ArrayA is ["Hello, World!", 12345] Length is 2
ArrayA[0] = Hello, World!
ArrayA[1] = 12345
ArrayB is ["xyz", 78, 7, "etc"] Length is 4
ArrayB[0] = xyz
ArrayB[1] = 78
ArrayB[2] = 7
ArrayB[3] = etc

Die Ausgabe im Parserprotokoll lautet folgendermaßen:

ArrayA[0] = Hello World!
ArrayA[1] = 12345

In der folgenden Richtlinie wird Arrays eine Gruppe von Werten zugewiesen und anschließend werden die Werte ihrer Elemente in das Richtlinienprotokoll geschrieben.

Array1 = {"One", "Two", "Three", "Four",
"Five"};
Array2 = {1, 2, 3, 4, 5};
Array3 = {"One", 2, "Three", 4, "Five"};
					
String1 = "One";
String2 = "Two";
Array4 = {String1, String2};
					
Log(Array1[0]);
Log(Array2[2]);
Log(Array3[3]);
Log(Array4[1]);
					
Log(CurrentContext());

Hier werden vier unterschiedlichen Arrays Gruppen von Werten zugewiesen. Den ersten drei Arrays werden verschiedene Zeichenfolgeliterale und ganzzahlige Literale zugewiesen. Dem vierten Array werden Variablen als Arrayelemente zugewiesen.

Wenn Sie die Richtlinie ausführen, wird folgende Nachricht im Richtlinienprotokoll ausgegeben:

One
3
4
Two
"Prepared with user supplied parameters: "=(
String2=Two (String),
ActionType=1 (Byte),
String1=One (String),
ReportsPolicyName=TestArrays1 (String),
EventContainer=(EventReaderName=DefaultEventReader) (EventContainer),
PolicyName=TestArrays1 (String),
ActionNodeName=TestArrays1 (String),
Array4={One (String), Two (String)},
Array3={One (String), 2 (Long), Three (String), 4 (Long), Five (String)},
Array2={1 (Long), 2 (Long), 3 (Long), 4 (Long), 5 (Long)},
Array1={One (String), Two (String), Three (String), Four (String), Five (String)})