tag - ¿Implode una matriz con jQuery/Javascript?
title of page html (6)
¿Puedo implosionar una matriz en jQuery como en PHP?
Me gusta esto:
[1,2,3,4].join(''; '')
Para futuras referencias, si desea imitar el comportamiento de implode()
de PHP cuando no se especifica un delimitador (literalmente, simplemente unir las piezas), debe pasar una cadena vacía a join()
Javascript, de lo contrario, el uso de comas como delimitadores por defecto :
var bits = [''H'', ''e'', ''l'', ''l'', ''o'', '' '', ''W'', ''o'', ''r'', ''l'', ''d''];
alert(bits.join()); // H,e,l,l,o, ,W,o,r,l,d
alert(bits.join('''')); // Hello World
Podemos crear alternativas de implosión en javascript:
function my_implode_js(separator,array){
var temp = '''';
for(var i=0;i<array.length;i++){
temp += array[i]
if(i!=array.length-1){
temp += separator ;
}
}//end of the for loop
return temp;
}//end of the function
var array = new Array("One", "Two", "Three");
var str = my_implode_js(''-'',array);
alert(str);
Array.join
es lo que necesita, pero si lo desea, las personas amigables de phpjs.org han creado implode
para usted.
Luego, un poco fuera de tema ranting. Como señaló @ jon_darkstar alreadt, jQuery es JavaScript y no al revés. No necesitas saber JavaScript para poder entender cómo usar jQuery, pero ciertamente no duele y una vez que comiences a apreciar la reutilización o comiences a ver la imagen más grande que necesitas para aprenderla.
array.join
no estaba reconociendo ";" Como un separador, pero reemplazándolo con coma. Usando jQuery, puede usar $.each
para implosionar una matriz (tenga en cuenta que output_saved_json es la matriz y tmp es la cadena que almacenará la matriz implosionada):
var tmp = "";
$.each(output_saved_json, function(index,value) {
tmp = tmp + output_saved_json[index] + ";";
});
output_saved_json = tmp.substring(0,tmp.length - 1); // remove last ";" added
He utilizado subcadena para eliminar el último ";" Añadido a la final sin necesidad. Pero si lo prefiere, puede usar una substring
lugar de algo como:
var tmp = "";
$.each(output_saved_json, function(index,value) {
tmp = tmp + output_saved_json[index];
if((index + 1) != output_saved_json.length) {
tmp = tmp + ";";
}
});
output_saved_json = tmp;
Creo que esta última solución es más lenta que la primera porque necesita verificar si el índice es diferente a la longitud de la matriz cada vez que $.each
no termina.
Puedes hacer esto en JavaScript simple, usa Array.prototype.join
:
arrayName.join(delimiter)
No conozco ninguna función de jQuery que sea mejor.