Проблема в том, где вы вызываете String(filterred)
в этой части кода:
var filterred = lines.filter(function(line) {
return line.indexOf('//') != 0;
});
filterred = String(filterred).replace(/;/g, "; \n");
Обратите внимание, что ваша переменная filterred
является массивом. Когда вы вызываете String()
в массиве, он дает вам элементы массива, соединенные запятыми между ними, например,
String([ 'a', 'b', 'c' ])
даст результат:
"a,b,c"
Вместо этого используйте метод join()
в массиве и явно указать ему пустой разделитель строк:
filterred = filterred.join("").replace(/;/g, "; \n");
Обратите пристальное внимание на предложение @Andreas о некоторой отладке. Одна вещь, которая может помочь здесь, - это разбить цепочку вызовов, подобную приведенной выше, на отдельные операторы:
filterred = String(filterred);
filterred = filterred.replace(/;/g, "; \n");
Теперь вы можете поместить оператор debugger;
или два, запустить с открытыми инструментами разработчика, и он остановится в отладчике, чтобы вы могли посмотреть свои переменные:
debugger;
filterred = String(filterred);
debugger; // Here you will notice that 'filterred' has the commas in it
filterred = filterred.replace(/;/g, "; \n");
console.log();
тоже может быть прекрасным способом отладки, но debugger;
позволяет вам больше взаимодействовать с вашим кодом и данными.
Также у вас есть пробел после точки с запятой в последней строке. Вместо этого сделайте ";\n"
, чтобы избежать конечных пробелов.
И BTW «отфильтрованный» содержит только один «r». : -)