Add CSVtoArray
This commit is contained in:
19
snippets/CSVToArray.md
Normal file
19
snippets/CSVToArray.md
Normal file
@ -0,0 +1,19 @@
|
||||
### CSVToArray
|
||||
|
||||
Converts a comma-separated values (CSV) string to a 2D array.
|
||||
|
||||
Use `Array.slice()` and `Array.indexOf('\n')` to remove the first row (title row) if `omitFirstRow` is `true`.
|
||||
Use `String.split('\n')` to create a string for each row, then `String.split(delimiter)` to separate the values in each row.
|
||||
Omit the second argument, `delimiter`, to use a default delimiter of `,`.
|
||||
Omit the third argument, `omitFirstRow`, to include the first row (title row) of the CSV string.
|
||||
|
||||
```js
|
||||
const CSVToArray = (data, delimiter = ',', omitFirstRow = false) =>
|
||||
data.slice(omitFirstRow ? data.indexOf('\n')+1 : 0).split('\n').map(v => v.split(delimiter));
|
||||
```
|
||||
|
||||
```js
|
||||
CSVToArray('a,b\nc,d'); // [['a','b'],['c','d']];
|
||||
CSVToArray('a;b\nc;d', ';'); // [['a','b'],['c','d']];
|
||||
CSVToArray('col1,col2\na,b\nc,d', ',', true); // [['a','b'],['c','d']];
|
||||
```
|
||||
@ -4,7 +4,7 @@ Converts a 2D array to a comma-separated values (CSV) string.
|
||||
|
||||
Use `Array.map()` and `String.join(delimiter)` to combine individual 1D arrays (rows) into strings.
|
||||
Use `String.join('\n')` to combine all rows into a CSV string, separating each row with a newline.
|
||||
Omit the second argument, `delimiter` to use a default delimiter of `,`.
|
||||
Omit the second argument, `delimiter`, to use a default delimiter of `,`.
|
||||
|
||||
```js
|
||||
const arrayToCSV = (arr, delimiter = ',') => arr.map(v => v.join(delimiter)).join('\n');
|
||||
|
||||
@ -39,6 +39,7 @@ counter:browser,advanced
|
||||
countOccurrences:array
|
||||
createElement:browser,utility
|
||||
createEventHub:browser,event,advanced
|
||||
CSVToArray:string,array,utility
|
||||
currentURL:browser,url
|
||||
curry:function,recursion
|
||||
debounce:function
|
||||
|
||||
3
test/CSVToArray/CSVToArray.js
Normal file
3
test/CSVToArray/CSVToArray.js
Normal file
@ -0,0 +1,3 @@
|
||||
const CSVToArray = (data, delimiter = ',', omitFirstRow = false) =>
|
||||
data.slice(omitFirstRow ? data.indexOf('\n')+1 : 0).split('\n').map(v => v.split(delimiter));
|
||||
module.exports = CSVToArray;
|
||||
18
test/CSVToArray/CSVToArray.test.js
Normal file
18
test/CSVToArray/CSVToArray.test.js
Normal file
@ -0,0 +1,18 @@
|
||||
const expect = require('expect');
|
||||
const CSVToArray = require('./CSVToArray.js');
|
||||
|
||||
test('CSVToArray is a Function', () => {
|
||||
expect(CSVToArray).toBeInstanceOf(Function);
|
||||
});
|
||||
test('CSVToArray works with default delimiter', () => {
|
||||
expect(CSVToArray('a,b\nc,d')).toEqual([['a','b'],['c','d']]);
|
||||
});
|
||||
test('CSVToArray works with custom delimiter', () => {
|
||||
expect(CSVToArray('a;b\nc;d', ';')).toEqual([['a','b'],['c','d']]);
|
||||
});
|
||||
test('CSVToArray omits the first row', () => {
|
||||
expect(CSVToArray('col1,col2\na,b\nc,d', ',', true)).toEqual([['a','b'],['c','d']]);
|
||||
});
|
||||
test('CSVToArray omits the first row and works with a custom delimiter', () => {
|
||||
expect(CSVToArray('col1;col2\na;b\nc;d', ';', true)).toEqual([['a','b'],['c','d']]);
|
||||
});
|
||||
Reference in New Issue
Block a user