Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: CLI_Andreas_Schmidt am 19.07.06 - 10:57:06
-
Hi @all Devs,
gibt es eigentlich einen einfachen und unkomplizierten Weg um zwei Listenfelder (Arrays) zu vergleichen ? ---> also
In Feld 1 gibt es z.B. 4 Listeneinträge und es soll jetzt geprüft werden ob welcher in Feld 2 fehlt.
Mein Ansatz wäre jetzt eine forall-Schleife auf Feld 1 und dann @ismember in Feld 2 ausführen. Wobei ich noch kein LS-Code für @ismember gefunden habe.
-
Hallo,
rein in LS gehen nur verschachtelte Schleifen. Aber du kannst mit evaluate Formel in LS ausführen.
Rainer
-
in LS ArrayGetIndex
-
und mit der ArrayReplace function könntest du in einem Rutsch alle Vorkommen von Array A in ( einer Kopie von ) Array B durch "" ersetzen. Die resultierenden Einträge sind dann die, die in A fehlen.
-
Für LS: Pack dein zweites Array in eine Liste (den Arraywert als Listenindex), dann kannste mit IsElement danach suchen lasssen. Binäre Bäume sind da sehr flott :)
-
Danke : )
Ich werde mal die Ansätze durchgehen und dann die Lösung Posten.
-
Eine Liste ist ein binärer Baum?
Ich würde sagen, das ist eher eine einfach verkettete Liste, aber kein binärer Baum.
André
-
Hier die Lösung : )
For l = 1 To pruefdoccol.Count
Redim Preserve liste(j)
' In der Variable Liste sind jetzt alle Feldwerte aus den Dokumenten gespeichert
liste(j) = pruefdoc.final_mo(0)
j = j + 1
Set pruefdoc = pruefdoccol.GetNextDocument(pruefdoc)
Next
Dann.....
Forall m In Liste 2
indexresult = Arraygetindex( liste , m)
If Isnull(indexresult) Then
....
end if
Jupp..
-
Wenn man in einem Dokument ein item mit einer Liste füllt, kann man sehr schön mit item.Contains als Äquivalent zum @Ismember darauf zugreifen.
Ich weiß, daß wir hier in einem 6er-Forum sind: aber die Methode funktioniert ab Version 4 - und mit 5er Clients habe ich noch lange zu tun, kann also high sophisticated Funktionen für Client-Operationen nicht einsetzen.
-
Eine Liste ist ein binärer Baum?
Ich würde sagen, das ist eher eine einfach verkettete Liste, aber kein binärer Baum.
André
Das ist ja eigentlich nicht mal eine Liste sondern ein assoziatives Array. Allerdings ist die Abfrage eines Elementes über den Index sehr schnell. Dauert bei 300.000 Elementen nur minimal länger als bei 100 Elementen. Und dieser Effekt läßt mich auf einen binären Baum schließen. Alles andere wäre langsamer.
-
item.contains ist keine schlechte Möglichkeit. Funktioniert leider nur dann, wenn sich das Listefeld in EINEM Dokument befindet. Wird jedoch die Liste aus vielen Dokumenten zusammengesammelt, dann klappt das so schon nicht mehr. Die Index-Lösung ist wirklich sehr schön. : )