2016-06-30 20 views
1

Bei Verwendung von listRemoveDuplicates in Lucee entfernt es die doppelten Werte, aber das Trennzeichen immer noch am Ende des Werts.ListRemoveDuplicates Ergebnis hat ein Komma am Ende

Ex:

<cfset myUsers = 'sathish,sathish'> 
<cfset removeDups = listRemoveDuplicates(myUsers)> 

<cfdump var="#removeDups#" /> 

Dadurch wird die Ausgabe erzeugt:

sathish, 

Wenn jedoch dieselbe Funktion mit Adobe Coldfusion überprüft, erzeugt es den richtigen Wert (kein Komma am Ende):

Wie kann ich das Komma Trennzeichen in Lucee weglassen?

+4

Sieht so aus, als wäre bereits ein Fehler dazugekommen - https://luceeserver.atlassian.net/browse/LDEV-736 –

+0

Danke Miguel-F, aber ich habe die Funktion ListCompact() ist mein Problem zu lösen. Vielen Dank .. –

Antwort

2

Surfen die Lucee-Dokumentation, fand ich die ListCompact()-Funktion, die den richtigen Wert zurückgibt.

<cfset myUsers = 'sathish,sathish'> 
<cfset removeDups = listCompact(listRemoveDuplicates(myUsers))> 
<cfdump var="#removeDups#" /> 
+0

Diese Funktion funktioniert nur auf dem lucee Server. Nicht Adobe Coldfusion .. :-( –

+0

Eine andere Problemumgehung ist, es in ein Array und wieder zurück zu konvertieren: 'ArrayToList (listToArray (removeDups))'. Viel klunkier als 'ListCompact', aber es ist kompatibel mit beiden Motoren, wenn das ist – Leigh

1

Sie können auch eine benutzerdefinierte Funktion wie folgt erstellen:

<cffunction name="UDF_listRemoveDuplicates" access="public"> 
    <cfargument name="list" type="string" required="yes"> 

    <!--- Hash Map to maintain the order ---> 
    <cfset local.hashMap = createObject("java", "java.util.LinkedHashMap").init()> 

    <!--- Add list values as key to Hash Map ---> 
    <cfloop list="#arguments.list#" index="local.value" delimiters=","> 
     <cfset local.hashMap[local.value] = 1> 
    </cfloop> 

    <!--- Return list of Keys ---> 
    <cfreturn structKeyList(local.hashMap, ",")> 
</cffunction> 

<cfoutput>#UDF_listRemoveDuplicates("sathish,sathish")#</cfoutput> 

Diese auf beide funktionieren sollte. (Nicht getestet auf Lucee)

+0

Thx für Ihre Antwort @Beginner.Es funktioniert bereits gut in Adove ColdFusion-Server.Aber ich habe Probleme nur mit Lucee Server.Wir erstellen nicht wie diese benutzerdefinierte Funktion für dieses Problem.Das Problem auch mit dieser Funktion behoben listCompact(). –

+1

@SathishK Das funktioniert auf beiden wie erwartet. – Beginner

+0

Großartig! Ihre Antwort arbeitet an Lucee. Vielen Dank .. :-) –