Last active
March 20, 2023 02:46
-
-
Save iwek/7154706 to your computer and use it in GitHub Desktop.
TSV to JSON Conversion in JavaScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//var tsv is the TSV file with headers | |
function tsvJSON(tsv){ | |
var lines=tsv.split("\n"); | |
var result = []; | |
var headers=lines[0].split("\t"); | |
for(var i=1;i<lines.length;i++){ | |
var obj = {}; | |
var currentline=lines[i].split("\t"); | |
for(var j=0;j<headers.length;j++){ | |
obj[headers[j]] = currentline[j]; | |
} | |
result.push(obj); | |
} | |
//return result; //JavaScript object | |
return JSON.stringify(result); //JSON | |
} |
Slightly cleaner. Replacing the first slice with shift()
, which makes the second slice unnecessary.
function tsvJSON(tsv) {
const lines = tsv.split('\n');
const headers = lines.shift().split('\t');
return lines.map(line => {
const data = line.split('\t');
return headers.reduce((obj, nextKey, index) => {
obj[nextKey] = data[index];
return obj;
}, {});
});
}
Not really clean (but what function with reduce
in it is ;) ), but no slice
s, no headers
variable:
function tsvJSON(tsv) {
return tsv.split('\n')
.map(line => line.split('\t'))
.reduce((a, c, i, d) => {
if (i) {
const item = Object.fromEntries(c.map((val, j) => [d[0][j], val]))
return a ? [...a, item] : [item]
}
}, [])
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Good, but maybe this is shorter?