Question

Y at-il intégré de manière à se joindre à deux tableaux dans ColdFusion, semblables à array.concat() de JavaScript?

Était-ce utile?

La solution

Pas vraiment, mais devinez quoi, il suffit d'utiliser Java! :)

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

référence: API Interface Collection Java .

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

Autres conseils

Si vous utilisez Railo , vous pouvez utiliser ArrayMerge (Ex <cfset NewArray=ArrayMerge(FirstArray,SecondArray)>).

Son un peu stupide comment coldfusion manque de nombreuses fonctions de base que l'on peut attendre d'un langage de script. Voici que je devais écrire rapidement.

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

Dans CF 10 ou Railo 4, vous pouvez utiliser la fonction concat () du bibliothèque Underscore.cfc pour obtenir un nouveau tableau qui est une concaténation de deux autres tableaux (sans modifier les tableaux existants). Exemple cfscript:

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

Résultat:

// newArray == [1, 2]

En utilisant cette méthode pour obtenir un nouveau tableau est un peu plus propre que la création d'un nouveau tableau et appelant ArrayAppend sur deux fois.

(Avertissement: je l'ai écrit Underscore.cfc)

Array.join javascript (s) crée une chaîne de tous les éléments de la matrice séparés par le délimiteur s. Une fonction similaire dans ColdFusion est la fonction ArrayToList. En ce qui concerne un tableau annexant à un autre, je ne crois pas qu'il y ait une fonction CF pour cela. Consultez http: //livedocs.adobe .com / coldfusion / 8 / htmldocs / help.html? content = fonctions pt0_03.html # 3473387 pour voir la liste des fonctions de tableau dans CF. Ou essayer quelque chose comme ceci:

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

Vous pouvez facilement concaténer deux listes comme ceci:

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

Alors, d'abord convertir vos deux tableaux à l'aide de listes ArrayToList(). Combiner les deux listes avec le ListAppend (), puis convertir le dos de réponse à un tableau avec ListToArray().

Je ne sais pas comment cela est efficace, mais le code est très simple. J'aimerais utiliser le ArrayAppend () mais je suis dans ColdFusion 8.

J'ai pris cette Ben Nadel et utilisé pour effectuer le chiffrement et le hachage. A travaillé comme un 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top