Parameter
Description
Use this function to calculate the sum of values in an array.
Returns
The sum of values in an array. If the array parameter value is an empty array, returns zero.
Category
Array functions, Mathematical functions
Function syntax
arraySum(array [, parallel] [, maxThreadCount]) |
History
ColdFusion (2021 release): Introduced the following parameters:
- parallel
- maxThreadCount
ColdFusion (2018 release): Introduced named parameters.
ColdFusion (2016 release) Update 3 - Added ignoreUndefined parameter.
Parameters
|
Description |
---|---|
array |
(Required) Name of an array. |
ignoreEmpty |
(Optional) Boolean (true/false) value denoting whether to ignore empty (Null or "") values in the array while adding the elements. False by default. |
parallel |
True if you want to enable parallel programming. |
maxThreadCount |
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> myArray=[921,22,133,40,345,58,-6]; WriteOutput("Sum of values in myArray is:"); WriteOutput(ArraySum(myArray) & "|"); // returns sum of values in myArray myNewArray=[]; WriteOutput("Sum of values in myNewArray is:"); WriteOutput(ArraySum(myNewArray)); //returns zero since myNewArray is empty </cfscript>
Output
Sum of values in myArray is:1513|Sum of values in myNewArray is:0
Example - using the ignoreEmpty parameter
<cfscript> myarray=ArrayNew(1); myarray=[-23,56,97,javacast("null",""),"",1,23]; sum=arraysum(myarray,true); //ignoreEmpty=true writeoutput(sum); </cfscript>
Output
154
Using parallelization
<cfscript> for(i=1;i<=1001;i++){ arr[i] = i+25; if (i == 1000) arr[i] = i; } //writeDump(arr) function callback(item,index){ item = item + 2; return item; } t_start=GetTickCount() writeoutput(arr.map(callback).sum() & "<br/>") t_end=GetTickCount() writeoutput("<br>Time taken with no parallel:" & t_end-t_start) t_start=GetTickCount() writeoutput(arr.map(callback).sum(true,50) & "<br/>") t_end=GetTickCount() writeoutput("<br>Time taken with 50 threads:" & t_end-t_start) </cfscript>