是否有一个内置的方式加入两个阵列在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

其他提示

如果您正在使用 轨道, , 您可以使用 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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top