在将数组插入数组之前测试结构是否存在的最佳方法是什么?

时间:2011-07-13 08:25:10

标签: arrays coldfusion struct coldfusion-8

这是关于冷血......

我有一个结构数组,我希望只获得直接的值。 在插入此结构之前,测试结构中是否已存在结构的最佳方法是什么? 是否可以使用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>

希望这会有所帮助......

谢谢你, 米歇尔

2 个答案:

答案 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>