Parameter
Description
Determines if at least one value of a key-value pair in a struct satisfies a given condition.
Returns
True if at least one value matches a condition; false, otherwise.
Syntax
structSome(struct, function(key, value [,struct]){} [, parallel] [, maxThreads])
		
	
Member function
structObj.Some(callback)
History
ColdFusion (2021 release): Introduced the following parameters:
- parallel
 
- maxThreadCount
ColdFusion (2018 release) Update 5: Added this function.
Parameters
|  | Required/Optional | Description | 
|---|---|---|
| struct | Required | Struct in which at least one value is to be searched. | 
| callback | Required | Function that encapsulates the criteria. | 
| parallel | Optional | (Boolean)- True if you want to enable parallel programming. | 
| maxThreads | Optional | (Int) The number of threads the function can execute. The number of threads must be between 1-50. If the value exceeds 50, there is an exception. | 
Example
Example 1
<cfscript>
 mystruct = {a=1,b=2,c=3};
 doesValExist=(key,value,struct)=>return value==1
 writeoutput(structSome(mystruct,doesValExist))
</cfscript>
		
	
Output
YES
Example 2
<cfscript> 
 structEven={a=2,b=4,c=8,d=10,e=12} 
 isEven=(key,value)=>value%2==0 
 writeOutput(StructSome(structEven,isEven)) // Returns True 
</cfscript>
		
	
Output
YES
Member function
<cfscript> 
 structEven={a=2,b=4,c=8,d=10,e=12} 
 isEven=(key,value)=>return value%2==0 
 writeOutput(structEven.Some(isEven)) // Returns True 
</cfscript>
		
	
Member function - Using arrow operator
<cfscript> 
 ordstruct=["key1":"abc","key2":"def","key3":"sss"] 
    lambdaFunc= key => key.contains("key") 
    writeOutput(ordstruct.Some(lambdaFunc)) 
</cfscript>
		
	
Exampe 3 - Named parameters
<cfscript> 
 mystruct={"key1":"aval","key2":"bval","key3":"cval"} 
 result=StructSome(struct=mystruct,callback=function(key,val){ 
  if (key.contains("key1") && val.startswith("a")) 
              return 1 
  else 
              return 0 
   } 
 ) 
 writeOutput(result) 
</cfscript>
		
	
Output
YES
Using parallelization
<cfscript> 
mystruct= Structnew("ordered"); 
for(i=1;i<=10000;i++){ 
mystruct.insert("key#i#","val#i#") 
 
} 
function callback(key,val){ 
if(isObject(val)) 
 return true 
return false 
 } 
   
 t_start=GetTickCount() 
 writeoutput(mystruct.some(callback)) 
 t_end=GetTickCount() 
 writeoutput("<br>Time taken with no parallel:" &  t_end-t_start) 
 
 t_start=GetTickCount() 
 writeoutput(mystruct.some(callback,true,5)); 
 t_end=GetTickCount() 
 writeoutput("<br>Time taken with 5 threads:" &  t_end-t_start) 
  
  
 t_start=GetTickCount() 
 writeoutput(mystruct.some(callback,true,10)) 
 t_end=GetTickCount() 
 writeoutput("<br>Time taken with 10 threads:" &  t_end-t_start) 
  
 t_start=GetTickCount() 
 writeoutput(structsome(struct=mystruct,callback=callback,parallel=true,maxthreadcount=20)) 
 t_end=GetTickCount() 
 writeoutput("<br>Time taken with 20 threads:" &  t_end-t_start) 
  
 t_start=GetTickCount() 
 writeoutput(structsome(struct=mystruct,callback=callback,parallel=true,maxthreadcount=40)) 
 t_end=GetTickCount() 
 writeoutput("<br>Time taken with 40 threads:" &  t_end-t_start) 
  
</cfscript>