filter und order eigener Arrays
Wenn man Arrays manuell, also nicht über select() erstellt, kann man leider where zum filtern nicht benutzen. Auch order funktioniert nur mit geänderter Syntax. Ich habe mal eine Beispielliste erstellt, die einige for-Schleifen erspart insbesondere, wenn Arrays verglichen werden. Wer in seinem Code noch Zeilen einsparen möchte, kann vielleicht von den Anregungen profitieren. Fehler gefunden? Posten. Mirko
let one := ["Peter", "Paul", "Mary", "tim", "Tim", "paul"];
let two := ["Mary", "Suzi"];
let three := [1, 21, 3, 4, 5, 7, 11, 9];
"Datumrange die letzten 1200 Tage, step: zwei Tage";
let four := range(today() - 1200, today(), 2 * 86400000);
---
FILTER
---;
---
################################# stringarray ####################################
---;
"Ist two ein vollständiges subarray von one?";
cnt(one[contains(two, this)]) = cnt(two);
"Filtere alle Elemente aus two, die auch in one enthalten sind!";
two[contains(one, this)];
"Filtere alle Elemente aus two, die NICHT in one enthalten sind!";
two[not contains(one, this)];
"Filtere alle Elemente mit geradem Index ≙ jedem zweiten Element des Stringarray!";
one[even(index(one, this))];
"Filtere alle Elemente, die kürzer als das letzte Element des Stringarrays sind!";
one[length(this) < length(last(one))];
"Filtere alle Elemente die ein T oder t enthalten! case-insensitiv";
one[this like "t"];
"oder einfach nur";
one[like "t"];
"Filtere alle Elemente die den Großbuchstaben T enthalten! case-sensitiv";
one[contains(this, "T")];
"Aus zwei Arrays alle einmaligen Werte (Unikate) zusammenführen ";
array(one, two[not contains(one, this)]);
"oder - eleganter";
unique(one, two);
---
################################# numberarray ####################################
---;
"Filtere alle Elemente die ungerade sind!";
three[odd(this)];
"Filtere alle Elemente die ohne Rest durch 3 teilbar sind aus einem Zahlenarray!";
three[this % 3 = 0];
"Filtere alle Elemente die eine 1 enthalten aus einem Zahlenarray!";
three[text(this) like "1"];
"Filtere alle Elemente die kleiner sind als der Durchschnitt aus einem Zahlenarray!";
three[this < avg(three)];
"oder einfach nur";
three[< avg(three)];
"Filtere die drei größten Elemente aus einem Zahlenarray!";
slice(sort(three), -3, null);
"oder auch";
slice(rsort(three), 0, 3);
"Halbiere das Array (natürlich nur wenn es geradzahlig ist)!";
"erste Hälfte";
slice(three, 0, cnt(three) / 2);
"zweite Hälfte";
slice(three, cnt(three) / 2, null);
"Filtere durch Entfernung des/der größte(n) und kleinste(n) Element(e) aus einem Zahlenarray!";
three[this != max(three) and this != min(three)];
"oder einfach nur";
three[!= max(three) and != min(three)];
---
################################# datearray ####################################
---;
"Filtere alle Montage aus einem Datumarray!";
four[weekday(date(this)) = 0];
"Filtere alle Arbeitstage aus einem Datumarray!";
four[weekday(date(this)) < 5];
"Filtere den letzten Sonntag im Datumarray!";
last(four[weekday(date(this)) = 6]);
"Filtere alle Tage November 2024";
four[year(this) = 2024 and month(this) = 11];
"Filtere alle Tage der ersten Kalenderwoche im Datumarray!";
four[week(this) = week(first(four))];
"Filtere alle Daten mit Alter größer 2!";
four[age(this) > 2];
---
SORT-ORDER
---;
"Sortierung nach Länge der Namen!";
let s1 := (one order by length(this));
"Sortierung nach letztem Buchstaben!";
let s2 := (one order by substr(this, -1));
"Sortiere alphabetisch - ALLE Wörter die mit Kleinbuchstaben beginnen, weden nach denen mit Großbuchstaben sortiert!";
let s3 := (one order by this);
"Sortiere alphabetisch - gleichlautende Wörter die mit Kleinbuchstaben beginnen, werden vor denen mit Großbuchstaben sortiert!";
let s4 := sort(one);
4 Antworten
-
probier mal den array als variable noch mal in eine for schleife zu setzen
let filterArray:= for item in one do item end;
filterArray[item="Peter"]
oder mit object arrays würde es auch gehen
let one:= [{name: "Peter", age:"old"}, {name: "Peter", age:"young"}, {name:"Paul", age:"young"}]
let filterArray:= for item in one do item end;
filterArray[name="Peter" and age="old"]
ich nehme eigentlich immer lieber object arrays, da hast du im Nachgang mehr potential anzupassen
hoffe ich hab keinen syntax fehler drin, ansonsten teste ich noch mal
Content aside
- vor 10 TagenZuletzt aktiv
- 4Antworten
- 49Ansichten
-
4
Folge bereits