This package currently allows for four operations with CSV files:
- return a promise that will supply a CSV-formatted UTF-8 string, reformatted as an array, from a specified file
- return a promise that will supply a CSV-formatted UTF-8 string, reformatted as an array of objects--the first "row's" cells determine the property names for each object, if the user does not provide an appropriately sized array of property names
- update the data of a specified file to reflect the values in an specified array
- write an array of arrays to a UTF-8 CSV file
Suppose there are two files named sample1.csv
and sample2.csv
within the ./data-store
directory.
sample1.csv
:
00,01,02
10,11,12
20,21,22
sample2.csv
:
Left,MiddleLeft,MiddleRight,Right
AA,AB,AC,AD
BA,BB,BC,BD
Now, we can access and manipulate these files as follows:
const csvAndArray = require('csv-and-array')
const sample1 = csvAndArray.csvFileAsArray('./data-store/sample1.csv')
const sample2 = csvAndArray.csvFileAsArray('./data-store/sample2.csv')
// Return a promise to supply `sample1.csv`'s values as an array of arrays.
var samp1AsArrPromise = sample1.getValues()
samp1AsArrPromise.then(console.log)
/* expected output:
--> [['00','01','02'],['10','11','12'],['20','21','22']]
*/
// Change the values within `sample2.csv` by
// applying a transforming function to the analogous array of arrays,
// and return a promise to supply the file's new content as a UTF-8 string.
sample2.changeValues(
arr=>arr.concat([['CA','CB','CC','CD']])
)
// Check to see impact of the changes.
sample2.getValues().then(console.log)
/* expected output:
--> [
['Left','MiddleLeft','MiddleRight','Right'],
['AA','AB','AC','AD'],
['BA','BB','BC','BD'],
['CA','CB','CC','CD']
]
*/
// Return a promise to supply `sample2.csv`'s values as an array of objects
// with the file's first row dictating the property names for each subsequent
// row's analogous object property:(cell value) pairs.
var samp2AsObjPromise = sample2.getValuesAsObj()
samp2AsObjPromise.then(console.log)
/* expected output:
--> [
{ Left: 'AA', MiddleLeft: 'AB', MiddleRight: 'AC', Right: 'AD' },
{ Left: 'BA', MiddleLeft: 'BB', MiddleRight: 'BC', Right: 'BD' },
{ Left: 'CA', MiddleLeft: 'CB', MiddleRight: 'CC', Right: 'CD' }
]
*/
// Return a promise to supply `sample1.csv`'s values as an array of objects
// with the property names provided in the array ['l','m','r'] for each
// row's analogous object property:(cell value) pairs.
var samp1AsObjPromise = sample1.getValuesAsObj(['l','m','r'])
samp1AsObjPromise.then(console.log)
/* expected output:
--> [
{ l: '00', m: '01', r: '02' },
{ l: '10', m: '11', r: '12' },
{ l: '20', m: '21', r: '22' }
]
*/
Finally, we can write a UTF-8 CSV file named sample3.csv
from an array of arrays to the directory ./data-store
:
const csvAndArray = require('csv-and-array')
var sample3Arr = [[1,2,3,4],[2,4,6,8],[3,6,9,12]]
csvAndArray.arrayToCSVFile('./data-store/sample3.csv',sample3Arr)
// expected output --> 'success'
We should now see the following content in sample3.csv
:
1,2,3,4
2,4,6,8
3,6,9,12