2010-11-10 9 views

risposta

55

in questo modo:

[1,2,3,4].join('; ') 
496

È possibile farlo in pianura JavaScript, utilizzare Array.prototype.join:

arrayName.join(delimiter) 

non so di alcuna funzione jQuery che sia migliore.

+0

@jball grazie per il miglioramento –

+3

Un moderatore può accettare questa risposta o alcuni come farlo andare in cima? Ho perso questa risposta inizialmente leggendo questo. – PressingOnAlways

+0

@PressingOnAlways grazie a bontà i moderatori non possono – Andrew

26

Array.join è quello che ti serve, ma se ti piace, le persone amichevoli al phpjs.org hanno creato per te implode.

Quindi qualche ranting leggermente fuori tema. Come @jon_darkstar ha sottolineato, jQuery è JavaScript e non viceversa. Non è necessario per conoscere JavaScript per essere in grado di capire come usare jQuery, ma certamente non fa male e una volta che si inizia ad apprezzare la riusabilità o si inizia a guardare l'immagine più grande è assolutamente necessario impararlo.

+1

+1 per il collegamento alla documentazione, sempre apprezzato. – rymo

+22

poi di nuovo, javascript è il mio plugin jQuery preferito ;-) –

2

Siamo in grado di creare un'alternativa di implode di in 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); 
+10

Caso di testo di cose da non fare. Non eseguire concatenazioni di stringhe in un ciclo. Non sostituire le funzioni integrate veloci con il tuo codice lento. Usare il costruttore 'Array' invece che i letterali è inutilmente prolisso. Se sei disperato di ricreare la funzione implode, la cosa più intelligente sarebbe avvolgere il metodo integrato di join con la tua funzione. La cosa più intelligente è imparare la lingua in cui stai programmando. – mikerobi

0

array.join non riconosceva ";" come separatore, ma sostituendolo con una virgola. Utilizzando jQuery, è possibile utilizzare $.each per implodere una matrice (Si noti che output_saved_json è la matrice e tmp è la stringa che memorizzerà la matrice implosa):

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 

ho usato stringa per rimuovere l'ultimo ";" aggiunto alla finale senza necessità. Ma se si preferisce, è possibile utilizzare invece substring qualcosa come:

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; 

penso che questa ultima soluzione è più lento rispetto al 1 ° uno perché ha bisogno di controllare se index è diverso da quello della lunghezza dell'array ogni volta, mentre $.each non finiscono.

+0

Se stai ricevendo un ',' invece di un ';' ti stavi dimenticando di passare il delimitatore al metodo di join. Prova 'your_array.join (';')' – mikerobi

+0

L'ho provato in quel momento ma non funzionava in IE (non ricordo la versione esatta, ma penso che fosse IE6).Avevo bisogno di supportarlo in quel momento (app Enterprise ...). Nei nuovi browser la tua nota probabilmente ha senso. Grazie per la nota Mike e grazie per il downvote PRIMA di chiedere PERCHE 'ho usato questo metodo. – jaysponsored

+1

Il parametro join funziona in IE 4, 5, 5.5, 6+. Potrei aver lavorato in IE3 ma non riesco a ottenere la mia copia per eseguire JavaScript, quindi non posso testare. – mikerobi

14

Per riferimento futuro, se si vuole imitare il comportamento di PHP's implode() when no delimiter is specified (letteralmente appena unire i pezzi insieme), è necessario passare una stringa vuota in Javascript del join() altrimenti il ​​valore di default per utilizzare le virgole come delimitatori:

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