Каков наилучший способ проверить, существует ли структура перед вставкой в ​​массив? - PullRequest
3 голосов
/ 13 июля 2011

Это о холодном синтезе ...

У меня есть массив структур, в которых я хотел бы получить только точные значения.Каков наилучший способ проверить, если структура уже существует в моем массиве, прежде чем вставить эту?Можно ли проверить это с помощью содержимого (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 ]

3 голосов
/ 13 июля 2011

CF9:

if (!ArrayContains(structs, struct))
    arrayAppend(structs, struct);

CF8, попробуйте Java's contains () в java.util.List. Массив CF расширяет java.util.Vector, поэтому я думаю, что это будет работать:

if (structs.contains(struct))
    arrayAppend(foo, struct);
2 голосов
/ 13 июля 2011

Вместо использования массива структур, используйте запрос, а затем выполните 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>
...