array arrays coldfusion cfml

arrays - array coldfusion



Únase a dos matrices en ColdFusion (8)

CF10 +, uso

arrayAppend(array1, array2, true);

https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-a-b/arrayappend.html

¿Existe una forma incorporada de unir dos matrices en ColdFusion, similar a la de array.concat() JavaScript?


En CF 10 o Railo 4, puede usar la función concat () de la biblioteca Underscore.cfc para obtener una nueva matriz que es una concatenación de otras dos matrices (sin modificar las matrices existentes). Ejemplo cfscript:

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

Resultado:

// newArray == [1, 2]

Usar este método para obtener una nueva matriz es un poco más limpio que crear una nueva matriz y llamar a ArrayAppend dos veces.

(Descargo de responsabilidad: escribí Underscore.cfc)


En javascript array.join (s) crea una cadena de todos los elementos de la matriz separados por los delimitadores. Una función similar a esto en ColdFusion es la función ArrayToList. En cuanto a agregar una matriz a otra, no creo que haya una función CF para eso. Consulte http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions-pt0_03.html#3473387 para ver la lista de funciones de matriz en CF. O intente algo como esto:

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


Es un poco tonto cómo Coldfusion echa de menos muchas funciones básicas que uno esperaría de un lenguaje de scripting. Aquí hay uno que tuve que escribir rápidamente.

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



Puede concatenar fácilmente dos listas como esta:

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

Entonces, primero convierta sus dos matrices en listas usando ArrayToList() . Combine las dos listas con ListAppend () y luego convierta la respuesta a una matriz con ListToArray() .

No sé cuán eficiente es esto, pero el código es muy simple. Me encantaría usar el arrayAppend () pero estoy en ColdFusion 8.


Si está utilizando Railo , puede usar ArrayMerge (por ejemplo, <cfset NewArray=ArrayMerge(FirstArray,SecondArray)> ).


Tomé esto de Ben Nadel y lo usé para realizar cifrado y hash. ¡Trabajado como un encanto!

<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://.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>