¿Hay una forma incorporada de unir dos matrices en ColdFusion, similar al array.concat()
de JavaScript?Unir dos matrices en ColdFusion
Respuesta
No realmente, pero adivina qué, ¡solo usa Java! :)
<cfset foo = [1,2,3]>
<cfset bar = [4,5,6]>
<cfset foo.addAll(bar)>
referencia: Java's Collection Interface API.
fuente: http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/merging-two-arrays-267
Si está utilizando Railo, puede utilizar ArrayMerge (Por ejemplo <cfset NewArray=ArrayMerge(FirstArray,SecondArray)>
).
He agregado a ColdFusion Bug Tracker de Adobe como solicitud de funciones en http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=83397. ¡Vota! :) – Henry
ArrayConcat vs. ArrayMerge Vs ArrayAppend? Discuta aquí: http://groups.google.com/group/cfml-conventional-wisdom/browse_thread/thread/95a4b511128c37ae – Henry
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 intentar algo como esto:
<cfscript> for(index = 1; index LTE ArrayLen(array2); i = i + 1) { ArrayAppend(array1, array2[i]); } </cfscript>
gracias, me refiero a array.concat. Arreglé la pregunta – Yisroel
Su poco tonto cómo ColdFusion pierde muchas de las funciones básicas que uno esperaría de un lenguaje de script. 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>
CF10 +, utilice
arrayAppend(array1, array2, true);
Mejor tarde que nunca. :) –
+1, Es impresionante que hayas recordado esta pregunta y hayas vuelto dos años después para mejorarla. – John
En la FQ 10 o Railo 4, puede utilizar la función concat() de la Underscore.cfc library 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]
El uso de este método para obtener una nueva matriz es un poco más limpio que la creación de una nueva matriz y llamando ArrayAppend en él dos veces.
(Negación: Escribí Underscore.cfc)
Tomé esta Nadel de Ben y lo utilizó para realizar el 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://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>
En realidad creo que lo obtuviste de mí, jaja ... y mirando este hilo, * Yo * probablemente lo obtuve de la respuesta de @noj y lo reescribí en cfscript;) – Leigh
Puede concatenar dos listas fácilmente así:
<cfset combolist = ListAppend(lista,listb, ",")>
Por lo tanto, primero convertir sus órdenes de dos de las listas utilizando ArrayToList()
. Combine las dos listas con ListAppend() y luego convierta la respuesta a una matriz con ListToArray()
.
No sé qué tan eficiente es esto, pero el código es muy simple. Me encantaría usar el arrayAppend() pero estoy en ColdFusion 8.
Solo ten en cuenta que no es un equivalente completo como lo hará a) soltar cualquier elemento vacío de la matriz y b) dividir los valores de la matriz en cualquier delimitador que se use ','. es decir, el valor único 'arr [1] =" Doe, John "' se convertiría en 'arr [1] = Doe, arr [2] = John'. – Leigh
Leigh, haz un buen punto. Esto podría solucionarse utilizando un delimitador de lista diferente, como ~~~, o ~! ~! ~! que probablemente no aparecería dentro de la matriz. –
Es cierto, aunque varios caracteres no funcionarán en este caso. En la mayoría de las versiones de CF, los caracteres múltiples se tratan como delimitadores separados. es decir, '~!' significa que CF ve los valores como delimitados por '~' ** OR ** '!'. (Las cosas pueden haber cambiado en CF10). El uso de un solo carácter como ascii 30 y [preservar los elementos de la lista vacía] (http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions_l_21.html) debería acercarse mucho más. – Leigh
- 1. unir/unir matrices en C#
- 2. Unir matrices en VB.NET
- 3. Unir dos subconsulta en MySQL
- 4. Unir dos resultados en Powershell
- 5. unir dos consultas SQL
- 6. Algoritmo para unir dos montones máximos?
- 7. JavaScript: ¿Cómo unir/combinar dos matrices para concatenar en una matriz?
- 8. Unir dos matrices numpy 2D en una única matriz 2D de 2 tuplas
- 9. XCode: ¿Cómo unir dos líneas?
- 10. Compara dos matrices, ¿hay elementos comunes entre las dos matrices?
- 11. ¿Cómo puedo unir dos caminos en C#?
- 12. ¿Cómo unir dos generadores en Python?
- 13. ¿Cómo unir dos líneas en vi?
- 14. MySQL cómo unir tablas en dos campos
- 15. unir dos tablas en una gran tabla
- 16. Fusionando dos matrices en Bash
- 17. Combinar dos matrices en JavaScript
- 18. Comparando dos matrices en Matlab
- 19. array dividido en dos matrices
- 20. Combinar dos matrices en Hash
- 21. Intersecar dos matrices
- 22. Ordenando dos matrices correspondientes
- 23. php fusionar dos matrices
- 24. diferencia entre dos matrices
- 25. uniendo dos matrices numpy
- 26. combinar dos matrices
- 27. Comparación de dos matrices
- 28. Unir dos archivos WAV de Java?
- 29. Concatenar/fusionar/unir dos árboles AVL
- 30. Expresión regular para unir dos frases separadas
Por extraño que parezca, los métodos subyacentes de Java no funcionan siempre como se esperaba. Todavía no entiendo exactamente cuándo y por qué.A menudo utilizo métodos Java para eliminar duplicados, unir y ordenar matrices, recuerdo que a veces no funcionaba dependiendo de cómo se crean las matrices, qué operaciones se realizan antes de llamar al método Java, etc. ¡Así que preste atención! –
@ zarko.susnjar - Sé que este es un hilo viejo, pero el motivo de los resultados inesperados con métodos como 'removeAll',' retainAll', etcétera es que los métodos de Java no son tan indulgentes como la función CF típica. Por lo general, son sensibles al tipo de datos. Así que '" 2 "' (cadena) y 'val (2)' (número) se consideran valores/elementos diferentes. A menos que esté absolutamente seguro de que los tipos de datos en ambas matrices coinciden, es mejor que utilice otros métodos IMO. – Leigh
Por supuesto, si no está seguro de algo, siempre vaya de la manera más segura y probada. –