这是关于冷血......
我有一个结构数组,我希望只获得直接的值。 在插入此结构之前,测试结构中是否已存在结构的最佳方法是什么? 是否可以使用contains(javacast(...))进行测试?
提前谢谢你, 米歇尔
最后我找到了如何添加一部分代码:)
<cfset count = 0>
<cfset foo = []>
<cfif this struct does not exists in the array...>
<cfset count = count + 1>
<cfset foo[count] = {key = currentBar.getValue(), value = anotherValueVar}
</cfif>
希望这会有所帮助......
谢谢你, 米歇尔
答案 0 :(得分:3)
CF9:
if (!ArrayContains(structs, struct))
arrayAppend(structs, struct);
CF8,在java.util.List中尝试Java的contains()。 CF数组扩展了java.util.Vector所以我想这会起作用:
if (structs.contains(struct))
arrayAppend(foo, struct);
答案 1 :(得分:2)
不使用结构数组,而是使用查询,然后对其进行select distinct
查询查询。
<cfscript>
q = QueryNew('key,value');
// add a row to the query
QueryAddRow(q, 1);
QuerySetCell(q, 'key', currentBar.getValue());
QuerySetCell(q, 'value', anotherValueVar);
</cfscript>
<!--- Now that all the (non-distinct) rows have been added. --->
<cfquery name="dq" dbtype="query">
<!--- Have to escape the names "key" and "value" with brackets
because they are reserved words in CF queries. --->
select distinct [key], [value] from q
</cfquery>