在ColdFusion中join两个数组

有没有一种内置的方式来joinColdFusion中的两个数组,类似于JavaScript的array.concat()

不是真的,而是猜测,只要使用Java! 🙂

 <cfset foo = [1,2,3]> <cfset bar = [4,5,6]> <cfset foo.addAll( bar )> 

参考: Java的Collection接口API 。

来源: http : //www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/merging-two-arrays-267

如果您使用Railo ,则可以使用ArrayMerge (例如<cfset NewArray=ArrayMerge(FirstArray,SecondArray)> )。

它有点愚蠢如何coldfusion错过许多基本function,人们可以期望从脚本语言。 这是我不得不写的一个。

 <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中,可以使用Underscore.cfc库的concat()函数来获取一个新的数组,该数组是两个其他数组的串联(不需要修改现有数组)。 示例cfscript:

 newArray = _.concat([1], [2]); 

结果:

 // newArray == [1, 2] 

使用这种方法来获得一个新的数组比创build一个新的数组并且在其上调用ArrayAppend两次要干净一些。

(免责声明:我写了Underscore.cfc)

在javascript数组中.join(s)创build一个由分隔符s隔开的数组中的所有元素的string。 在ColdFusion中类似的函数是ArrayToList函数。 至于追加到另一个数组我不相信有一个CFfunction。 查看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拿来这个,用它进行encryption和散列。 像魅力一样工作!

 <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>