avpath - Prädikate
avpath-Prädikate ermöglichen Ihnen beim Verfassen von Ausdrücken das Schreiben ganz spezifischer Regeln für auszuwählende Elemente. Prädikate sind Filter, die die ausgewählten Elemente nach Speicherpfad beschränken. Man unterscheidet zwischen zwei möglichen Prädikattypen: Objekt und Position.
Weitere Informationen zu Speicherpfaden finden Sie unter avpath - Lokalisierungspfad.
Objekt-Prädikate
Objekt-Prädikate können in Pfadausdrücken verwendet werden, um eine Teilgruppe von Elementen anhand von booleschen Ausdrücken zu filtern, die auf die Eigenschaften jedes Elements ausgerichtet sind. Objekt-Prädikate sind in Klammern eingefasst.
-
Numerische Literale (z. B. 1.23)
-
Zeichenfolgen-Literale (z. B. „John Gold“)
-
Boolesche Literale (True/False)
-
Unterpfade (z. B. .nestedProp.deeplyNestedProp)
-
Vergleichsoperatoren
-
Vergleichsoperatoren für Zeichenfolgen
-
Logische Operatoren
-
Arithmetische Operatoren
Operator | Beschreibung | Beispiel |
---|---|---|
== |
Gibt True zurück, wenn beide Operanden identisch sind. |
.customers{.id == "1"} |
=== |
Gibt True zurück, wenn beide Operanden ohne Typkonvertierung vollkommen übereinstimmen. |
.customers{.id === 1} |
!= |
Gibt True zurück, wenn die Operanden nicht identisch sind. |
.customers{.id != "1"} |
!== |
Gibt True zurück, wenn die Operanden nicht identisch sind und/oder nicht denselben Typ aufweisen. |
.customers{.id !== 1} |
> |
Gibt True zurück, wenn der linke Operand größer ist als der rechte. |
.customers{.id > 1} |
>= |
Gibt True zurück, wenn der linke Operand größer oder gleich dem rechten Operanden ist. |
.customers{.id >= 1} |
< |
Gibt True zurück, wenn der linke Operand kleiner ist als der rechte. |
.customers{.id < 1} |
<= |
Gibt True zurück, wenn der linke Operand kleiner oder gleich dem rechten Operanden ist. |
.customers{.id <= 1} |
- Wenn es sich bei den zwei zu vergleichenden Operanden um Arrays handelt, ist das Vergleichsergebnis True, wenn der Vergleich von einem Element im ersten und einem Element im zweiten Array das Ergebnis True ergibt.
- Wenn ein Operand ein Array ist und der andere nicht, dann ergibt der Vergleich das Ergebnis True, wenn in einem Array ein Element vorhanden ist und der Vergleich dieses Elements mit dem anderen Operanden True ergibt.
- Primitive werden als gängige Javascript-Primitive verglichen.
Wenn es sich bei beiden Operanden um Zeichenfolgen handelt, sind zusätzliche Vergleichsoperatoren verfügbar:
Operator | Beschreibung | Beispiel |
---|---|---|
== |
Wie der Standardoperator ==, aber es wird nicht zwischen Groß- und Kleinschreibung unterschieden |
.customers{.Lastname == "Von Celaeno"} |
^== |
Gibt True zurück, wenn der linke Operandwert mit dem rechten Operandwert beginnt. |
.customers{.Lastname ^== "Celaeno"} |
^= |
Wie ^==, aber es wird nicht zwischen Groß- und Kleinschreibung unterschieden |
.customers{.Lastname ^= "celaeno"} |
$== |
Gibt True zurück, wenn der linke Operandwert mit dem rechten Operandwert endet. |
.customers{.Lastname $== "Von"} |
$= |
Wie $==, aber es wird nicht zwischen Groß- und Kleinschreibung unterschieden |
.customers{.Lastname $= "von"} |
*== |
Gibt True zurück, wenn der linke Operandwert den rechten Operandwert enthält. |
.customers{.Lastname \*== "Celaeno"} |
*= |
Wie *==, aber es wird nicht zwischen Groß- und Kleinschreibung unterschieden |
.customers{.Lastname \*= "celaeno"} |
Operator | Beschreibung | Beispiel |
---|---|---|
&& |
Gibt True zurück, wenn beide Operanden den Wert True aufweisen. |
.customers{.Revenue > 77000 && .customers.Lastname === "Von Celaeno"} |
|| |
Gibt True zurück, wenn einer der Operanden den Wert True aufweist. |
.customers{.Firstname === "Quentin" || .State === "AZ"} |
! |
Negiert den Operanden. |
.customers{!.Firstname} |
- Wenn der Operand ein Array ist (die Anwendung eines Unterpfads ergibt ebenfalls ein Array):
- Wenn die Länge des Arrays größer ist als null, ist das Ergebnis True.
- Andernfalls ist das Ergebnis False.
- In allen anderen Fällen Übergabe mit doppeltem NOT(!!)-Javascript-Operator.
Operator | Beschreibung |
---|---|
+ |
Addition |
- |
Subtraktion |
* |
Multiplikation |
/ |
Division |
% |
Modulo |
Operator | Beschreibung |
---|---|
1 (erste Stelle) |
! -unary |
2 |
* / % |
3 |
+ -binary |
4 |
>= |
5 |
== === != !== ^= ^== $== $= *= *== |
6 |
&& |
7 |
|| |
Klammern werden eingesetzt, um die Rangfolge explizit auszuweisen, indem die Teile eines Ausdrucks gruppiert werden, die zuerst ausgewertet werden sollen.
Beispiele:
// find the last name of the customer who lives in South Roosevelt Drive
avpath.select(doc, ".customers{.Address.Street === \"South Roosevelt Drive\"}.Lastname", schema)
// ['Novo']
// find all States where the customers revenue is less than 78000
avpath.select(doc, ".customers{.Revenue < 78000}.States", schema)
// ['AZ', 'CT']
Positions-Prädikate von Arrays
Positions-Prädikate ermöglichen Ihnen die Filterung von Elementen nach deren Kontextposition. Positions-Prädikate sind immer in eckige Klammern gesetzt.
-
[index] — Gibt ein indexpositioniertes Element im Kontext zurück (das erste Element befindet sich an Index 0). Beispiel: [3] gibt das vierte Element im Kontext zurück.
-
[index:] — Gibt Elemente zurück, deren Index im Kontext größer oder gleich dem angegebenen Index ist. Beispiel: [2:] gibt Elemente zurück, deren Index im Kontext größer oder gleich 2 ist.
-
[:index] — Gibt Elemente zurück, deren Index im Kontext kleiner ist als der angegebene Index. Beispiel: [:5] gibt die ersten fünf Elemente im Kontext zurück.
-
[indexFrom:indexTo] — Gibt Elemente zurück, deren Index im Kontext größer oder gleich dem Anfangswert indexFrom und kleiner als der Endwert indexTo ist. Beispiel: [2:5] gibt drei Elemente mit den Indizes 2, 3, und 4 zurück.
-
[-1] — Gibt das letzte Element im Kontext zurück.
-
[-3] — Gibt die letzten drei Elemente im Kontext zurück.
Beispiele:
// find first customer state
avpath.select(doc, ".customers[0].States")
// ['AZ']
// find last customer state
avpath.select(doc, ".customers[-1].States")
// ['CT']
// find two customer states from second position
avpath.select(doc, ".customers[1:3].States")
// ['NC', 'CT']
Schlüssel-Prädikate zur Zuordnung
-
("key" | ~"key regex") — Gibt Elemente im Kontext zurück (die dem Regex entsprechen).
Mehrere Prädikate
Sie können mehr als ein Prädikat verwenden. Das Ergebnis enthält dann nur Elemente, die allen Prädikaten entsprechen.
// find first customer name whose revenue less than 70000 and greater than 50000
avpath.select(doc, ".customers{.Revenue < 70000}{.Revenue > 50000}[0].Firstname")
// ['Quentin']