Угловой JS JSON2CSV

0

Хотя я пытаюсь загрузить данные фильтра в ng-table в CSV, я получаю разделение одной строки на две строки.

Результат будет выглядеть следующим образом:

Строка содержит три столбца

Item 1 | 12222-12228-14567-124568-18680-20940-18717-ABCDED-sdf_dsfsdf | X-Large

Вместо этого я получаю

1-я строка

Item 1 | 12222-12228-14567-124568-18680-20940-18717-ABCDED-sdf_dsfsdf |

2-я строка

X-Large

вот мой код

var data = [{ "name": "Item 1", "color": "12222-12228-14567-124568-18680-20940-18717-ABCDED-aSFDasdf_sdfsdf_dsfsdf", "size": "X-Large" },
     { "name": "Item 2", "color": "Green", "size": "X-Large" },
     { "name": "Item 3", "color": "Green", "size": "X-Large" }];

$scope.downloadData = function (data){
       var csv = $scope.JsonToCsv(data);         
}

$scope.JsonToCsv = function(objArray) {
var array = typeof objArray != 'object' ? JSON.parse(objArray) :objArray;
        var str = '';
        var line = '';
        var head = array[0];
        for (var index in array[0]) {
            var value = index + "";
            line += '"' + value.replace(/"/g, '""') + '",';
        }
        line = line.slice(0, -1);
        str += line + '\r\n';
        for (var i = 0; i < array.length; i++) {
            var line = '';
            for (var index in array[i]) {
                line += array[i][index] + ',';
            }
            line = line.slice(0, -1);
            str += line + '\r\n';
        }
        return str;
    }

Может ли кто-нибудь помочь мне найти то, что пошло не так в моем коде?

  • 1
    Я только что запустил этот код в jsfiddle, и он, кажется, работает. Возможно, стоит предоставить немного больше кода, например, как эта функция вызывается в вашем контроллере.

1 ответ

0

У меня есть рабочий код для этого, я изменился в соответствии с вашими потребностями. Надеюсь, это сработает и для вас

            var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
            var str = '';
            var line = "";
            for (var index in array[0]) {
                line += index + ',';
            }
            line = line.slice(0, -1);
            str += line + '\r\n';
            for (var i = 0; i < array.length; i++) {
                var line = "";
                for (var index in array[i]) {
                    line += '"' + array[i][index] + '",';
                }
                line.slice(0, line.length - 1);
                str += line + '\r\n';
            }
            if (str == '') {
                alert("oops");
                return;
            }
            console.log(str);
            return str;

Благодаря :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню