2011-03-08 17 views

Respuesta

4

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); 
} 
9
<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.

+0

1 para la creatividad –

+1

@Henry: Awesomely impresionado. Me salvaste mucho tiempo –

7

Antes de agregar una comprobación de valor para ver si existe utilizando arrayContains o listFindNoCase.

4

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)