const csvToJSON = (csv) => { const getcsvdata = (csv) => { const csvRegex = /,(?=(?:(?:[^"]*"){2})*[^"]*$)/; const trimQuotes = /^"|"$/g; csv = csv.split(csvRegex).map( h => h.trim().replace(trimquotes, '') ); return csv; } let lines = csv.split('\n'); let headers = getcsvdata(lines[0]); let result = []; lines.slice(1).forEach(line => { var item = {}; let currentline = getcsvdata(line); headers.forEach((header, i) => { item[header] = currentline[i]; }) result.push(item); }); return result; } let csv = `Name, Age, City John, 21, New York "Jane, Doe", 22, San Francisco Jim, 23, Chicago "Jill Chill", 24, "Tacoma, Seattle"`; console.log(csvToJSON(csv));