Me preguntaba si había una manera fácil de imponer valores distintos en una lista o matriz de fusión fría.coldfusion distinct list
Gracias
Me preguntaba si había una manera fácil de imponer valores distintos en una lista o matriz de fusión fría.coldfusion distinct list
Gracias
No hay funciones predefinidas que hagan lo que está pidiendo, pero es fácil implementar sus propias funciones que lo harían. Las funciones que proporcioné son muy simples y fáciles de ampliar.
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;
}
Puede utilizar la función anterior para añadir claridad a la matriz, todo esto supone que está utilizando delimitadores por defecto. No estoy seguro del "tamaño" de sus datos porque puede ser costoso.
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);
}
<cfset temp = structNew()>
<cfloop list="a,b,c,a,c" index="i">
<cfset temp[i] = "">
</cfloop>
<cfset distinctList = structKeyList(temp)>
Esta es la solución más simple que puedo pensar. Los inconvenientes de esto es que el orden no se conserva, y los elementos de la lista no distinguen entre mayúsculas y minúsculas. Si necesita insensibilidad de mayúsculas/minúsculas, use hashset de Java.
Antes de agregar una comprobación de valor para ver si existe utilizando arrayContains o listFindNoCase.
Puede utilizar el Underscore.cfc library en la FQ 10 o Railo 4:
_ = new Underscore();// instantiate the library
uniqueArray = _.uniq(array);// convert an array to a unique array
No creo que se vuelve más simple que eso!
(Negación: Escribí Underscore.cfc)
1 para la creatividad –
@Henry: Awesomely impresionado. Me salvaste mucho tiempo –