update JSON2CSV implementation, other utils

This commit is contained in:
Josh de Leeuw 2021-08-25 15:34:03 -04:00
parent c374991d17
commit d636e3ac45

View File

@ -23,35 +23,33 @@ export function saveTextToFile(textstr: string, filename: string) {
// http://stackoverflow.com/users/317/joseph-sturtevant // http://stackoverflow.com/users/317/joseph-sturtevant
export function JSON2CSV(objArray) { export function JSON2CSV(objArray) {
var array = typeof objArray != "object" ? JSON.parse(objArray) : objArray; const array = typeof objArray != "object" ? JSON.parse(objArray) : objArray;
var line = ""; let line = "";
var result = ""; let result = "";
var columns = []; const columns = [];
var i = 0; for (const row of array) {
for (var j = 0; j < array.length; j++) { for (const key in row) {
for (var key in array[j]) { let keyString = key + "";
var keyString = key + "";
keyString = '"' + keyString.replace(/"/g, '""') + '",'; keyString = '"' + keyString.replace(/"/g, '""') + '",';
if (!columns.includes(key)) { if (!columns.includes(key)) {
columns[i] = key; columns.push(key);
line += keyString; line += keyString;
i++;
} }
} }
} }
line = line.slice(0, -1); line = line.slice(0, -1); // removes last comma
result += line + "\r\n"; result += line + "\r\n";
for (var i = 0; i < array.length; i++) { for (const row of array) {
var line = ""; line = "";
for (var j = 0; j < columns.length; j++) { for (const col of columns) {
var value = typeof array[i][columns[j]] === "undefined" ? "" : array[i][columns[j]]; let value = typeof row[col] === "undefined" ? "" : row[col];
if (typeof value == "object") { if (typeof value == "object") {
value = JSON.stringify(value); value = JSON.stringify(value);
} }
var valueString = value + ""; const valueString = value + "";
line += '"' + valueString.replace(/"/g, '""') + '",'; line += '"' + valueString.replace(/"/g, '""') + '",';
} }
@ -66,10 +64,10 @@ export function JSON2CSV(objArray) {
// http://stackoverflow.com/posts/3855394 // http://stackoverflow.com/posts/3855394
export function getQueryString() { export function getQueryString() {
var a = window.location.search.substr(1).split("&"); const a = window.location.search.substr(1).split("&");
var b = {}; const b = {};
for (var i = 0; i < a.length; ++i) { for (let i = 0; i < a.length; ++i) {
var p = a[i].split("=", 2); const p = a[i].split("=", 2);
if (p.length == 1) b[p[0]] = ""; if (p.length == 1) b[p[0]] = "";
else b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); else b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
} }