¿Implode una matriz con jQuery / Javascript?


Respuestas:


546

Puede hacer esto en JavaScript simple, use Array.prototype.join:

arrayName.join(delimiter)

No conozco ninguna función jQuery que sea mejor.


44
¿Puede una fuerza moderadora aceptar esta respuesta o de alguna manera hacer que llegue a la cima? Perdí esta respuesta al principio leyendo esto.
PressingOnAlways


28

Array.joines lo que necesita, pero si lo desea, la gente amable de phpjs.org lo ha creado implodepara usted.

Luego algunos despotrican un poco fuera de tema. Como @jon_darkstar ya señaló, jQuery es JavaScript y no al revés. No necesita saber JavaScript para poder entender cómo usar jQuery, pero ciertamente no duele y una vez que comience a apreciar la reutilización o comience a mirar la imagen más grande, absolutamente necesita aprenderlo.


23
por otra parte, javascript ES mi plugin jQuery favorito ;-)
jon_darkstar

16

Para referencia futura, si desea imitar el comportamiento de PHP implode()cuando no se especifica ningún delimitador (literalmente, solo unir las piezas), debe pasar una cadena vacía a Javascript; de lo join()contrario, el uso de comas como delimitadores es predeterminado:

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

10

El uso del método join () crea y devuelve una nueva cadena concatenando todos los elementos en una matriz.

Ejemplo de trabajo

var arr= ['A','b','C','d',1,'2',3,'4'];
var res= arr.join('; ')
console.log(res);


1

Podemos crear una alternativa de implosión de 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);

12
Caso de libro de texto de cosas que no se deben hacer. No realice la concatenación de cadenas en un bucle. No reemplace las funciones integradas rápidas con su propio código lento. Usar el Arrayconstructor en lugar de literales es excesivamente detallado. Si está desesperado por recrear la función de implosión, lo inteligente sería envolver el método de unión incorporado con su propia función. Lo más inteligente es aprender el lenguaje en el que está programando.
mikerobi

0

array.joinno estaba reconociendo ";" cómo un separador, pero reemplazándolo con una coma. Con jQuery, puede usar $.eachpara 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 usado la subcadena para eliminar el último ";" añadido en la final sin necesidad. Pero si lo prefiere, puede usar substringalgo 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 $.eachno termina.


Si recibieras un ',' en lugar de un ';' se olvidaba de pasar el delimitador al método de unión. Probaryour_array.join(';')
mikerobi

Lo intenté en ese momento pero no funcionó en IE (no recuerdo la versión exacta, pero creo que fue IE6). Necesitaba soportarlo en ese momento (aplicación Enterprise ...). En los navegadores más nuevos, su nota probablemente tenga sentido. Gracias por la nota Mike y gracias por el voto negativo ANTES de preguntar POR QUÉ he usado este método.
patrocinado el

1
El parámetro join funciona en IE 4, 5, 5.5, 6+. Es posible que no haya trabajado en IE3, pero no puedo hacer que mi copia ejecute JavaScript, por lo que no puedo probar.
mikerobi

Si, funciona. Pero no con ";". Se une pero reemplaza ";" con ",", al menos en Server 2003.
patrocinado
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.