Frage

Gibt es eine eingebaute Möglichkeit, zwei Arrays in Coldfusion zu verbinden, ähnlich wie JavaScript ist array.concat()?

War es hilfreich?

Lösung

Nicht wirklich, aber erraten, was gerade Java nutzen! :)

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

Hinweis: Java API .

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

Andere Tipps

Wenn Sie mit Railo , können Sie a href verwenden <= "http: // wiki. getrailo.org/wiki/3-1-Functions:ArrayMerge“rel = "noreferrer"> ArrayMerge (zB <cfset NewArray=ArrayMerge(FirstArray,SecondArray)>).

Sein irgendwie dumm, wie Coldfusion viele grundlegende Funktionen verpasst, dass man von einer Skriptsprache erwartet. Hier ist ein ich schnell zu schreiben hatte.

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

In CF 10 oder Railo 4, können Sie die concat () Funktion der Underscore.cfc Bibliothek ein neues Array zu erhalten, die eine Verkettung von zwei anderen Arrays ist (ohne die vorhandenen Anordnungen zu verändern). Beispiel cfscript:

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

Ergebnis:

// newArray == [1, 2]

Mit dieser Methode ein neues Array zu erhalten, ist ein bisschen sauberer als ein neues Array erstellen und Aufrufe Arrayappend es zweimal.

(Disclaimer: Ich schrieb Underscore.cfc)

in JavaScript Array.join (n) erzeugt einen String aus allen Elementen der Anordnung durch das Trennzeichen s getrennt. Eine ähnliche Funktion wie dies in Coldfusion ist die ArrayToList Funktion. Soweit ein Array zu einem anderen anhängen Ich glaube nicht, dass es eine CF-Funktion für das ist. Überprüfen Sie http: //livedocs.adobe .com / Coldfusion / 8 / htmldocs / help.html? content = Funktionen-pt0_03.html # 3473387 die Liste der Array-Funktionen in CF. zu sehen Oder versuchen, etwas wie folgt aus:

<cfscript>
   for(index = 1; index LTE ArrayLen(array2); i = i + 1) {
      ArrayAppend(array1, array2[i]);
  }
</cfscript>

Sie können einfach verketten zwei Listen wie folgt aus:

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

Also, zuerst konvertieren Sie Ihre zwei Arrays auf Listen mit ArrayToList(). Kombinieren Sie die beiden Listen mit dem ListAppend () und dann wandelt die Antwort zurück auf ein Array mit ListToArray().

Ich weiß nicht, wie effizient das ist, aber der Code ist sehr einfach. Ich würde gerne die Arrayappend () verwenden, aber ich bin in Coldfusion 8.

Ich habe diese von Ben Nadel und den verwendeten Verschlüsselung und Hashing auszuführen. Arbeitete wie ein Charme!

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top