StructFilter

Description

Filters the key-value pairs in a struct.

Returns

Filtered struct.

Category

Syntax

structFilter(struct,callback [, parallel] [, maxThreads])

History

ColdFusion (2021 release): Introduced the following parameters:

  • parallel
  • maxThreadCount

ColdFusion (2018 release): Introduced named parameters.

ColdFusion 10: Added this function.

Parameters

Parameter

Description

struct

Name of the struct object.

callback

Inline function executed for each element in the array. Returns true if the key value pair in the struct has to be included in the resultant struct.

parallel

(Boolean)- True if you want to enable parallel programming.

maxThreads

(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

<cfscript>
       myStruct={CF1=4.5,CF2=6,CF3=7,CF4=8,CF5=9,CF6=10,CF7=11,CF8=2016};
       WriteOutput("The input, unfiltered struct is:");
       WriteDump(myStruct);
       myFilteredStruct=StructFilter(myStruct,function(key,value){
             return value>8; //Return only those values >8
       }
       );
       WriteOutput("The filtered struct is:");
       WriteDump(myFilteredStruct);//Display the filtered struct
</cfscript>

Output

Using member function

<cfscript>
       myStruct={CF1=4.5,CF2=6,CF3=7,CF4=8,CF5=9,CF6=10,CF7=11,CF8=2016};
       CFVersions=myStruct.filter(function(key,value){
             return value>8;
       });
       WriteDump(CFVersions);
</cfscript>

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 false 
        else if(isSimplevalue(val) && key eq 'key889') 
        {  
            return true 
        } 
        else return false 
     
    } 
    t_start=GetTickCount() 
 writedump(mystruct.filter(callback)) 
 t_end=GetTickCount() 
 writedump("Time taken with no parallel:" &  t_end-t_start) 
 
 t_start=GetTickCount() 
 writedump(mystruct.filter(callback,true,5)); 
 t_end=GetTickCount() 
 writedump("Time taken with 5 threads:" &  t_end-t_start) 
  
  
 t_start=GetTickCount() 
 writedump(mystruct.filter(callback,true,10)) 
 t_end=GetTickCount() 
 writedump("Time taken with 10 threads:" &  t_end-t_start) 
  
 t_start=GetTickCount() 
 writedump(structfilter(struct=mystruct,callback=callback,parallel=true,maxthreadcount=20)) 
 t_end=GetTickCount() 
 writedump("Time taken with 20 threads:" &  t_end-t_start) 
  
 t_start=GetTickCount() 
 writedump(structfilter(struct=mystruct,callback=callback,parallel=true,maxthreadcount=40)) 
 t_end=GetTickCount() 
 writedump("Time taken with 40 threads:" &  t_end-t_start) 
</cfscript>
Adobe logo

Sign in to your account