2012-06-11 18 views
7

Mam ciąg znaków budowania ciąg znaków oddzielone wartości Używam split, aby uzyskać każdą wartość, a następnie chcę pokazać każdą wartość w nowej linii, ale tak naprawdę to się dzieje, że Otrzymuję każdą wartość w nowym wierszu, z wyjątkiem dwóch ostatnich, które są wyświetlane razem w tej samej linii. Żeby było jasne:JavaScript jak wyświetlić każdy element tablicy w nowej linii

wartosc1

, VALUE2

, wartość3

, value4, value5

Oto funkcja, która używam:

_checkDates: function(dates) { 
     if (dates != null) 
     { 
      var zzz = dates.split(','); 
      var xxx = zzz.length; 
      console.log(xxx); 
      for (var i=0; i<=xxx; i++) 
       { 
        zzz[i] = zzz[i] + '<br />'; 
        return zzz; 
       } 
     } 
     return dates; 
    } 

Dla jasności jest to napisane w ExtJS 4, jestem prawie pewien, że w tym przypadku problem jest czysty JavaScript i nie jest związany z ExtJS 4, ale tak czy owak, może się mylę.

Więc jakie są pomysły, dlaczego tak się dzieje i jak mogłem zrobić to ostatnie, aby dostać się do nowej linii?

Dzięki

Leron

+0

dlaczego w tobie r dla pętli mają znak równości. powinno być mniej niż wtedy. na przykład. jeśli zzz ma długość 5 (xxx = 5), chcesz uzyskać dostęp do elementów od 0 do 4, wartość 1 indeks = 0, wartość2 indeks = 1, wartość3 indeks = 2, wartość4 indeks = 3 i wartość5 indeks = 4. obecnie robisz 0 do 5., ponieważ pętla kończy się po osiągnięciu 5 nie 4. w ten sposób próbujesz uzyskać dostęp do zzz [5], który nie ma żadnej wartości. – GreenGiant

+0

Wiem o tym, ale próbowałem z '<' i '<=' nawet z '==' to nie zadziałało. Nie znam powodu, dla którego znacznik '
' nie jest przypisany, w rzeczywistości dlatego zamieszczam pytanie.Odpowiedź Stefana poniżej rozwiązuje mój obecny problem, ale byłbym wdzięczny, gdyby ktoś powiedział mi, gdzie jest błąd w moim skrypcie i jak go zmodyfikować, aby działał prawidłowo. – Leron

Odpowiedz

7

pętli for jest podejrzane. Po pierwsze, nie przetwarzasz wszystkich przedmiotów (ten ostatni brak, jak zauważył @sarfraz). Sencondly wracasz wyniku (zzz) w pętli for ciała:

for (var i=0; i<=xxx; i++) 
{ 
    zzz[i] = zzz[i] + '<br />'; 
    return zzz; // for-loop will stop here! resulting in ["value1<br />", "Value2", etc...] 
} 

W javscript można proste „join” tablicę:

return dates.split(',').join("<br />") 

Ponieważ jesteś po prostu zastąpienie ciągów można użyć metoda replace:

return dates.replace(",", "<br />"); 
+2

'return dates.split (','). Join ("
")' - dokładnie to, czego potrzebuję. Dzięki. – Leron

11

zmodyfikowałem swoją funkcją bitową cleaner.since już Stefan wspomniał swój błąd.

function splitDate(dates) { 
     if (dates != null) 
     { 
      var dates = dates.split(','); 
      var xxx = dates.length; 
      console.log(xxx); 
      for (var i=0; i<xxx; i++) 
       { 
        dates[i] = dates[i];      
       } 
     } 
     console.log(dates.join('\r\n')); 
     return dates.join('\r\n');   
    } 

powyższych funkcji można zrobić to w jednym wierszu:

jeśli jest tablicą można podzielić na nowej linii w następujący sposób:

var arr = ['apple','banana','mango']; 
console.log(arr.join('\r\n')); 

jeśli jest to ciąg:

var str = "apple,banana,mango"; 
console.log(str.split(',').join("\r\n")); 
+0

możesz zrobić 'console.log (arr.join ('
'));' –

Powiązane problemy