CF-Arrays durchsuchen

Mischa Sameli, Geschäftsführer & Leiter Entwicklung

Wenn’s ColdFusion nicht kann, ist man mit Java besser dran: Array-Funktionen von Java können direkt in CF angesprochen werden und bieten nützliche Funktionen in Kurzform.

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:
1b.removeAll(a)
Ebenfalls elegant ist die Möglichkeit, zwei eindimensionale Arrays zusammenzuführen:
1<cfset a.addAll(b) />

Bitte lassen Sie dieses Feld leer
Kommentar hinzufügen


Bitte lassen Sie dieses Feld leer
Beitrag als E-Mail verschicken
E-Mail via Webmail versenden

Schön, dass Ihnen unser Beitrag gefallen hat. Benutzen Sie folgende Social Networking Dienste, um den Beitrag abzulegen und zu verteilen. Selbstverstädlich können Sie ein direktes Lesezeichen auf diesen Artikel setzen.