我需要的JavaScript將一些對象是這樣的:如何刪除「」轉換Javascript對象時,.csv文件?
{available :null
avg: null
current:116
max:null
min:null
status:"Pending, Charged Off"
balance:-166085.77}
用別人的JS代碼,加入一點點我的GET API,其中包括兩個函數的第一個代碼轉換:
$scope.convertArrayOfObjectsToCSV = function (args) {
var result, ctr, keys, columnDelimiter, lineDelimiter, data;
data = args.data || null;
if (data == null || !data.length) {
return null;
}
columnDelimiter = args.columnDelimiter || ',';
lineDelimiter = args.lineDelimiter || '\n';
keys = Object.keys(data[0]);
result = '';
result += keys.join(columnDelimiter);
result += lineDelimiter;
data.forEach(function(item) {
ctr = 0;
keys.forEach(function(key) {
if (ctr > 0) result += columnDelimiter;
result += item[key];
ctr++;
});
result += lineDelimiter;
});
return result;
}
第二,一個用於下載:
$scope.downloadCSV = function (args) {
var data, filename, link;
//my code:
$http.get(
apis[$scope.selectedKeys[0]]
).success(function (data) {
$scope.data = data;
})
var stringData = angular.toJson($scope.data.items);
$scope.newData = JSON.parse(stringData);
console.log($scope.newData);
//my code end
var csv = $scope.convertArrayOfObjectsToCSV({
data: $scope.newData
});
if (csv == null) return;
// filename = args.filename || 'export.csv';
filename = $scope.selectedKeys[0] + '.csv';
if (!csv.match(/^data:text\/csv/i)) {
csv = 'data:text/csv;charset=utf-8,' + csv;
}
data = encodeURI(csv);
link = document.createElement('a');
link.setAttribute('href', data);
link.setAttribute('download', filename);
link.click();
}
它工作正常,只有一個問題是,當一些列用逗號狀這在object:status:「Pending,Charged Off」將被轉換爲csv文件中的另一列。我想我需要用這條線做點什麼:
columnDelimiter = args.columnDelimiter || ',';
但是不知道該怎麼辦?任何人都可以幫忙嗎?先進的謝謝!
我不知道你是否需要自己做,或者你可以只使用一個開源圖書館,也有JSON到CSV轉換相當多的庫[這裏只是我發現的結果之一(https://www.npmjs.com/package/json-2-csv),大多數都會有一些辦法幫助與那些問題 –
謝謝@PatrickBarr絕對,我會檢查他們。 –