Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03533.jsonl.gz/1900

Um Werte in einem ColdFusion-Array zu suchen bleibt in der Regel nur der weg über einen Loop.
1<cfloop from="1" to="ArrayLen(ary)" index="i">
2<cfif ary[i] EQ "suche">
3Treffer
4<cfbreak>
5</cfif>
Gerade bei Grossen Arrays kann das schon ein wenig Performance brauchen. Auf den Loop kann verzichtet werden, wenn das Array zuerst in eine Liste umgewandelt wird. Dann nämlich stehen Listen-Funktionen zur Verfügung.
1<cfif ListValueCount( ArrayToList(ary),"suche" )>
2Treffer!
3</cfif>
Auch hier haben wir bei grossen Arrays natürlich noch ein wenig Belastung, da das ganze Array zuerst in einen String umgewandelt wird und anschliessend werden String-Funktionen zur Wertesuche verwendet. Dies kann aber wiederum umgangen werden, wenn man Java zu Hilfe nimmt:
1<cfif ary.contains("suche")>
2Treffer!
3</cfif>
Natürlich haben die beiden letzten Methoden auch einen Nachteil: sie funktionieren nur mit eindimensionalen Arrays. Mehrdimensionale Arrays werden wohl oder übel ein Loop benötigen. Was bei der Java-Variante zudem zu Bedenken ist: Die Suche ist CaseSensitiv! Interessant wird es, wenn überprüft werden soll, ob alle Werte von Array a in Array b enthalten sind. Da kommt man mit herkömmlichen ColdFusion schon recht ins Schwitzen. Mit Java:
1<cfif b.containsAll(a)>
2Treffer!
3</cfif>
Und ebenfalls noch ganz effizient ist die Variante, Werte von Array a aus Array b zu entfernen:
Ebenfalls elegant ist die Möglichkeit, zwei eindimensionale Arrays zusammenzuführen: