9
A
답변
4
요청한 기능을 수행하는 사전 정의 된 함수는 없지만이를 수행하는 자신의 함수를 쉽게 구현할 수 있습니다. 내가 제공 한 기능은 매우 간단하고 확장하기 쉽습니다.
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;
}
위 함수를 사용하여 배열에 별개로 추가 할 수 있습니다.이 모든 것은 기본 구분 기호를 사용한다고 가정합니다. 값이 비싸기 때문에 데이터의 "크기"에 대해 확신 할 수 없습니다.
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)>
이것은 내가 생각할 수있는 가장 간단한 솔루션입니다. 이것의 단점은 주문이 보존되지 않으며 목록 항목이 대소 문자를 구분하지 않는다는 것입니다. 대소 문자를 구별하지 않으려면 Java의 해시 세트를 사용하십시오.
7
값을 추가하기 전에 arrayContains 또는 listFindNoCase를 사용하여 값이 존재하는지 확인하십시오.
4
당신은 CF 10 라일로 4 년 Underscore.cfc library를 사용할 수 있습니다
_ = new Underscore();// instantiate the library
uniqueArray = _.uniq(array);// convert an array to a unique array
나는 그보다 단순한를 얻을 수 있다고 생각하지 않는다!
(면책 조항 : 나는 Underscore.cfc을 썼다)
한 창의성 –
@Henry에 대한 : 놀랍도록 감동. 너는 나에게 많은 시간을 구해줬다. –