题
是否有一个内置的方式加入两个阵列在ColdFusion,类似于JavaScript array.concat()
?
解决方案
不是真的,但是猜猜是什么,只需使用java即可! :)
<cfset foo = [1,2,3]>
<cfset bar = [4,5,6]>
<cfset foo.addAll( bar )>
参考: Java的收集接口API.
来源: http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/merging-two-arrays-267
其他提示
CF10+,使用
arrayAppend(array1, array2, true);
https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-ab/arrayappend.html
如果您正在使用 轨道, , 您可以使用 arraymerge (例如 <cfset NewArray=ArrayMerge(FirstArray,SecondArray)>
).
ColdFusion多么愚蠢地错过了人们从脚本语言中期望的许多基本功能。这是我必须快速写的。
<cffunction name="mergeArrays" returntype="array" >
<cfargument name="array1" type="array" required="true" >
<cfargument name="array2" type="array" required="true" >
<cfset arrayResult = arrayNew(1) >
<cfloop array="#array1#" index="elem">
<cfset arrayAppend(arrayResult,elem) >
</cfloop>
<cfloop array="#array2#" index="elem">
<cfset arrayAppend(arrayResult,elem) >
</cfloop>
<cfreturn arrayResult>
</cffunction>
在CF 10或Railo 4中,您可以使用Concat()函数 下划线。cfc库 要获得一个新数组,该数组是其他两个数组的串联(不修改现有数组)。示例cfscript:
newArray = _.concat([1], [2]);
结果:
// newArray == [1, 2]
使用此方法获取新数组比创建新数组并在其上调用Arrayappend两次要干净。
(免责声明:我写了inserscore.cfc)
在javascript阵列。加入(s)创建一串出的所有元素分离的分隔。一个类似的功能,以此在ColdFusion是ArrayToList功能。尽追加一系列到另一个我不认为这是一个CF功能。检查 http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions-pt0_03.html#3473387 看到列表中的阵列的功能在CF。或尝试的东西,像这样:
<cfscript> for(index = 1; index LTE ArrayLen(array2); i = i + 1) { ArrayAppend(array1, array2[i]); } </cfscript>
您可以轻松地加入这样的两个列表:
<cfset combolist = ListAppend(lista,listb, ",")>
因此,首先使用您的两个阵列转换为列表 ArrayToList()
. 。将两个列表与listAppend()结合在一起,然后将答案转换回一个数组 ListToArray()
.
我不知道这有多高效,但是代码非常简单。我很想使用arrayappend(),但我在ColdFusion 8中。
我从本·纳德尔(Ben Nadel)那里拿走了它,并用它来执行加密和哈希。像魅力一样工作!
<cfscript>
// Note: BinaryDecode/CharsetDecode return java arrays.
// Unlike CF arrays, java arrays are immutable,
// so the Java addAll(..) method to merge arrays won't work here.
// http://stackoverflow.com/a/10760835/104223
// function to merge immutable arrays the long way
function mergeArrays( array1, array2 ){
var i = 0;
var newArray = [];
for (i = 1; i <= arrayLen(arguments.array1); i++) {
arrayAppend(newArray, arguments.array1[i]);
}
for (i = 1; i <= arrayLen(arguments.array2); i++) {
arrayAppend(newArray, arguments.array2[i]);
}
return newArray;
}
//convert the saltArray string and CustomerID string to UTF-8 byte arrays.
saltByteArray = charsetDecode(salt, "utf-8");
CustomerIdByteArray = charsetDecode(CustomerId, "utf-8");
//create a new byte array consisting of the CustomerId bytes
//appended with the salt bytes by merging the two binary arrays
//via custom function, mergeArrays
mergedBytes = mergeArrays( CustomerIdByteArray, saltByteArray );
</cfscript>