Alex Rivera | Logout

ColdFusion - What's an efficient way to search an array of structs?

Asked 2009-05-14T20:39:13.553
15

I have a semi-large (hundreds of records) 1-dimensional array in ColdFusion. Each item in the array is a struct with several properties. I want to search the array for a struct that has a specific "name" property. I know that for an array of string values I could use Java methods like so:

<cfset arrayIndex = myArray.indexOf("WhatImLookingFor") + 1>

...but that won't work for an array of structs. I also know I could brute-force it like this:

<cfset arrayIndex = 0>
<cfloop from="1" to="#ArrayLen(myArray)#" index="counter">
    <cfif myArray[counter].name IS "WhatImLookingFor">
        <cfset arrayIndex = counter>
    </cfif>
</cfloop>

...but I feel like there must be a more efficient way. Does anyone have a better solution than this? You can assume that the "name" property is present in every struct and there are no gaps or other objects in the array.

Edit
Report

1 Answer

1

Without looking at it too deeply, I would consider converting the structure to a query (below) and then doing do a query of a query.. assuming your dataset isn't too huge!

http://www.bennadel.com/blog/264-Ask-Ben-Converting-A-Struct-To-A-Query-And-More-Java-.htm

Do share what you ended up doing!

Edit: The StructFindValue suggested looks to be excellent as well, I didn't think to look up any relevant functions.

answered 2009-05-14T20:44:43.010

Your Answer