Domanda

C'è un built-in modo per unire due matrici in ColdFusion, simili a array.concat() di JavaScript?

È stato utile?

Soluzione

Non proprio, ma indovinate un po ', basta usare Java! :)

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

di riferimento: Java Collection Interface API .

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

Altri suggerimenti

Se stai usando Railo , è possibile utilizzare ArrayMerge (Eg <cfset NewArray=ArrayMerge(FirstArray,SecondArray)>).

Il suo genere di muto come ColdFusion manca molte funzioni di base che ci si aspetta da un linguaggio di scripting. Ecco quello che ho dovuto scrivere rapidamente.

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

Si può facilmente concatenare due liste come questa:

<cfset combolist = ListAppend(lista,listb, ",")>

Quindi, prima convertire i due array di liste usando ArrayToList(). Unire le due liste con il ListAppend () e poi convertire la schiena risposta a un array con ListToArray().

Non so quanto sia efficiente questo è, ma il codice è molto semplice. Mi piacerebbe utilizzare l'arrayAppend (), ma io sono in ColdFusion 8.

Ho preso questa da Ben Nadel e lo ha utilizzato per eseguire la crittografia e hashing. Ha lavorato come un fascino!

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top