Add CSVToJSON

This commit is contained in:
Angelos Chalaris
2018-06-27 21:14:24 +03:00
parent 9f180a93ac
commit 5ef18a9a55
5 changed files with 49 additions and 1 deletions

View File

@ -0,0 +1,8 @@
const CSVToJSON = (data, delimiter = ',') => {
const titles = data.slice(0,data.indexOf('\n')).split(delimiter);
return data.slice(data.indexOf('\n')+1).split('\n').map(v => {
const values = v.split(delimiter);
return titles.reduce((obj, title, index) => ((obj[title] = values[index]), obj), {});
});
}
module.exports = CSVToJSON;

View File

@ -0,0 +1,12 @@
const expect = require('expect');
const CSVToJSON = require('./CSVToJSON.js');
test('CSVToJSON is a Function', () => {
expect(CSVToJSON).toBeInstanceOf(Function);
});
test('CSVToJSON works with default delimiter', () => {
expect(CSVToJSON('col1,col2\na,b\nc,d')).toEqual([{'col1': 'a', 'col2': 'b'}, {'col1': 'c', 'col2': 'd'}]);
});
test('CSVToJSON works with custom delimiter', () => {
expect(CSVToJSON('col1;col2\na;b\nc;d', ';')).toEqual([{'col1': 'a', 'col2': 'b'}, {'col1': 'c', 'col2': 'd'}]);
});