Skip to content

Instantly share code, notes, and snippets.

@jeffcoughlin
Created December 5, 2012 20:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeffcoughlin/4219029 to your computer and use it in GitHub Desktop.
Save jeffcoughlin/4219029 to your computer and use it in GitHub Desktop.
<cfset aItemsToDeleteTemp = [{"id"="apples"},{"id"="oranges"},{"id"="bananas"},{"id"="pears"},{"id"="kiwi"},{"id"=["peach"]}] />
<cfset aItemsInDB = [{"id"="apples"},{"id"="oranges"},{"id"="bananas"},{"id"="peach"}] />
<!--- Find the difference --->
<cfset aItemsToDeleteTemp.removeAll(aItemsInDB) />
<!--- Convert the remaining array of structs to a simple array --->
<cfset aItemsToDelete = [] />
<cfset aLen = arrayLen(aItemsToDeleteTemp) />
<cfloop from="1" to="#aLen#" index="r">
<cfif isArray(aItemsToDeleteTemp[r]["id"]) is true>
<!--- Due to a bug in CF, we have to do a nested cfif instead of both conditions in the same statement --->
<cfif arrayFind(aItemsInDB,{"id"=aItemsToDeleteTemp[r]["id"][1]}) eq 0>
<cfset arrayAppend(aItemsToDelete, aItemsToDeleteTemp[r]["id"][1]) />
</cfif>
<cfelse>
<cfset arrayAppend(aItemsToDelete, aItemsToDeleteTemp[r]["id"]) />
</cfif>
</cfloop>
<cfdump var="#aItemsToDelete#" abort="true" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment