Ich habe mich gefragt, ob es eine einfache Möglichkeit gibt, unterschiedliche Werte in einer Coldfusion-Liste oder einem Array zu erzwingen.
Danke
Ich habe mich gefragt, ob es eine einfache Möglichkeit gibt, unterschiedliche Werte in einer Coldfusion-Liste oder einem Array zu erzwingen.
Danke
<cfset temp = structNew()>
<cfloop list="a,b,c,a,c" index="i">
<cfset temp[i] = "">
</cfloop>
<cfset distinctList = structKeyList(temp)>
Das ist die einfachste Lösung, die ich mir vorstellen kann. Der Nachteil ist, dass die Reihenfolge nicht beibehalten wird und die Groß- und Kleinschreibung der Listenelemente nicht beachtet wird. Wenn Sie die Groß-/Kleinschreibung nicht beachten müssen, verwenden Sie Javas hashset.
Es gibt keine vordefinierten Funktionen, die das tun, wonach Sie fragen, aber es ist einfach, Ihre eigenen Funktionen zu implementieren, die dies tun würden. Die von mir bereitgestellten Funktionen sind sehr einfach und leicht zu erweitern.
variables.myList = "one,two,three";
variables.myList = ListAppendDistinct(variables.myList, "three");
variables.myList = ListAppendDistinct(variables.myList, "four");
function ListAppendDistinct(list, value)
{
var _local = StructNew();
_local.list = list;
if (NOT ListContains(_local.list, value))
{
_local.list = ListAppend(_local.list,value);
}
return _local.list;
}
Sie können die obige Funktion verwenden, um eindeutig an das Array anzuhängen, wobei davon ausgegangen wird, dass Sie Standardbegrenzungszeichen verwenden. Ich bin mir nicht sicher über die "Größe" Ihrer Daten, weil es teuer werden kann.
variables.myArray = ArrayNew(1);
variables.myArray[1] = "one";
variables.myArray[2] = "two";
variables.myArray[3] = "three";
variables.myArray = ArrayAppendDistinct(variables.myArray, "three");
variables.myArray = ArrayAppendDistinct(variables.myArray, "four");
function ArrayAppendDistinct(array, value)
{
var _local = StructNew();
_local.list = ArrayToList(array);
_local.list = ListAppendDistinct(_local.list,value);
return ListToArray(_local.list);
}
Sie können die Underscore.cfc-Bibliothek in CF 10 oder Railo 4:
_ = new Underscore();// instantiate the library
uniqueArray = _.uniq(array);// convert an array to a unique array
Ich glaube nicht, dass es noch einfacher ist als das!
(Haftungsausschluss: Ich habe Underscore.cfc geschrieben)
Für diejenigen, die sich diese Antwort jetzt ansehen: Sie ist es. Es gibt eine Funktion namens ListRemoveDuplicates()
. Sie wurde in ColdFusion 10 (2017) hinzugefügt.
Der folgende Code gibt zum Beispiel die eindeutigen Werte "AA,BB,CC" zurück
newList = listRemoveDuplicates("AA,BB,CC,AA,AA,AA,BB", ",");
writeOutput("newList = #newList#");
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.