将数组乘以Coldfusion中的数字

时间:2013-11-05 20:55:01

标签: arrays coldfusion

我需要使用Coldfusion通过数字(2)多个数组。

例如:myArray = [1,2,3,4]

将每个元素乘以数字2

我知道有一种map方法可以这样做,但不确定它在Coldfusion中是如何工作的。 有这个功能吗?或者需要为此编写自定义函数/方法?

4 个答案:

答案 0 :(得分:4)

使用CFScript

<cfscript>
for(var item in myArray) 
    { 
    myArray[item] *= 2; 
    }
</cfscript> 

或者如果你想保留原文

<cfscript>
newArray = myArray;   

for(var item in newArray) 
    { 
    newArray[item] *= 2; 
    }
</cfscript> 

答案 1 :(得分:4)

如果您使用的是ColdFusion 10,则可以使用arrayEach()

<cfscript>
original = [1,2,3,4];
multiplied = [];
arrayEach(original, function(e){
    arrayAppend(multiplied, e * 2);
});

writeDump(var=[original, multiplied]);
</cfscript>

答案 2 :(得分:2)

虽然地图功能在CF 10或Railo 4中不存在,但您可以使用map function中的Underscore.cfc library

_ = new Underscore(); // init library

result = _.map([1, 2, 3, 4], function(val) {
   return val * 2;
});

注意:我写了Underscore.cfc

答案 3 :(得分:0)

你必须编写自己的功能。听起来你可能已经掌握了如何做到这一点 - 但是,如果它有用,这就是我将如何实现它:

<cffunction name="ArrayMultiply" >
    <cfargument name="SourceArray" type="array" >
    <cfargument name="Factor" type="numeric" >
    <cfset NewArray = ArrayNew(1) >
    <cfloop index="i" from="1" to="#ArrayLen(ARGUMENTS.SourceArray)#" >
        <cfset NewArray[i] = ARGUMENTS.SourceArray[i] * ARGUMENTS.Factor >
    </cfloop>
    <cfreturn NewArray >
</cffunction>

<cfset MyArray = ArrayNew(1) >
<cfset MyArray[1] = 1 >
<cfset MyArray[2] = 2 >
<cfset MyArray[3] = 3 >
<cfset MyArray[4] = 4 >

<cfset MultipliedArray = ArrayMultiply( MyArray, 2 ) >

<cfoutput>
    <p>[ #MultipliedArray[1]#, #MultipliedArray[2]#, #MultipliedArray[3]#, #MultipliedArray[4]# ]</p>
</cfoutput>