Javascript как показать каждый элемент массива в новой строке

у меня есть строковая форма сборки, разделенные запятыми значения, которые я использую split чтобы получить каждое значение, и после этого я хочу показать каждое значение в новой строке, но на самом деле я получаю каждое значение в новой строке, кроме последних двух, которые показаны вместе в одной строке. Просто чтобы прояснить:--3-->

value1

, value2

, value3

, value4, value5

вот функция, которую я использование:

_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;
    }

чтобы быть ясным, это написано в ExtJS 4, я почти уверен, что в этом случае проблема является чистым JavaScript и не связана с ExtJS 4, но в любом случае, возможно, я ошибаюсь.

Итак, есть идеи, почему это происходит и как я мог бы сделать этот последний элемент, чтобы попасть на новую линию?

спасибо

Лерон

2 ответов


for-loop подозрителен. Во-первых, вы не обрабатываете все элементы (последний отсутствует, как указал @sarfraz). Sencondly вы возвращаете результат (zzz) в теле for-loop:

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...]
}

в Javscript вы можете просто "присоединиться" к массиву:

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

поскольку вы просто заменяете строки, вы можете использовать replace способ:

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

Я изменил вашу функцию bit cleaner.поскольку Стефан уже упомянул о твоей ошибке.

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');        
    }

вышеуказанная функция вы можете сделать ее в одной строке:

если это массив, вы можете разделить его на новую строку следующим образом:

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

если это строку:

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