diff --git a/index.js b/index.js index 9b026da..9b43592 100644 --- a/index.js +++ b/index.js @@ -143,3 +143,18 @@ exports.csvStringToJson = function(csvString) { exports.jsonToCsv = function(inputFileName, outputFileName) { csvToJson.generateJsonFileFromCsv(inputFileName, outputFileName); }; + + +/** + * map through individual row. + * @param {callback} function takes + * callback @param {header} the header or key + * callback @param {value} value/data + * + */ + +exports.map = function(callback) { + // callback = function(header, value, index){ } + csvToJson.map(callback) + return this +} diff --git a/src/csvToJson.js b/src/csvToJson.js index 8628777..a9f196a 100644 --- a/src/csvToJson.js +++ b/src/csvToJson.js @@ -59,6 +59,13 @@ class CsvToJson { for (let i = 1; i < lines.length; i++) { let currentLine = lines[i].split(fieldDelimiter); if (stringUtils.hasContent(currentLine)) { + + if (this.mapCallback && typeof this.mapCallback === 'function') { + const data = this.buildJsonResult(headers, currentLine) + jsonResult.push(this.mapCallback(headers, data, i)); + + continue + } jsonResult.push(this.buildJsonResult(headers, currentLine)); } } @@ -115,6 +122,11 @@ class CsvToJson { return false; } + map(callback) { + this.mapCallback = callback + } + + } module.exports = new CsvToJson();