在AngularJS中使用嵌套对象和ngCSV的数组到字符串

时间:2015-08-28 14:44:15

标签: arrays angularjs csv

我正在处理一组看起来像这样的对象:

recordlist.push(
    {
        date: '', 
        time: '', 
        comment: '',
        arrival: '',
    }

我正在过滤它并将其显示在前端,如下所示:

ng-repeat="record in filteredRecords = (recordlist | filter:dateFilter | filter: search )"

filteredRecords 是我在ngCSV中用来创建文件的变量:

<button ng-csv="filteredRecords"></button>

我正在使用ngCSV,它的工作就像一个魅力。但后来我更改了结构并开始使用嵌套数组,将对象转换为:

recordlist.push(
    {
        date: '', 
        time: '', 
        comments: [
            {message: '',
            commenttime: ''},
            {message: '',
            commenttime: ''},
            {message: '',
            commenttime: ''}
        ],
        arrival: '',
    }

由于ngCSV无法处理嵌套对象,我想在将数据添加到CSV文件之前必须先操作数据。

我的想法是将comments数组转换为字符串,在导出时将其写入CSV,然后在导入时再将其转换为数组。

类似的东西:

comments: 'message: test, commenttime:test / message: test2, commenttime: test2 / ...'

我怎么能接近这个?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你想重新格式化一个对象数组中的对象数组,这样二级数组中的每个单独对象现在都是它自己的键:原始对象中的值。

你可以用.map

来做到这一点

类似的东西:

$scope.MappedData = $scope.data.map(function (obj) {
    var reformattedObj = {};
    for (var i = 0; i < obj.comments.length; i++) {
        reformattedObj['comment' + [i]] = obj.comments[i];
    }
    reformattedObj['date'] = obj.date;
    reformattedObj['time'] = obj.time;
    reformattedObj['arrival'] = obj.arrival;

    return reformattedObj;
});

JS小提琴:http://jsfiddle.net/chrislewispac/upny1107/