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