JSFiddle - React, Tailwind, and code Playground
by Nayana Das
HTML
<h3>
CSV each column into separate array
</h3>
<textarea id="test-csv"></textarea><br>
<button id="parse-button" >Parse</button>
CSS
textarea {
width: 600px;
height: 300px;
}
JavaScript
$("#parse-button").click(function(){
var data=$('#test-csv').val();
//alert(data);
var csvarray=CSVToArray( data, "," );
var mainArr=[];
for (var i = 0; i < csvarray.length; i++) {
var arrr=[];
for(var j=0; j <csvarray.length; j++){
// console.log(csvarray[j][i]);
arrr.push(csvarray[j][i])
}
if(i==csvarray[i].length){
break;
}
mainArr.push(arrr);
}
console.log(JSON.stringify(mainArr));
var mainNumArr=[];
for (var i = 0; i < mainArr.length; i++) {
//console.log(csvarray[i]);
if(typeof mainArr[i] === 'number'){
var csvarray1=mainArr[i].map(Number);
mainNumArr.push(csvarray1);
}else{
mainNumArr.push(mainArr[i]);
}
}
console.log("MAIN_ARRAY number :: "+JSON.stringify(mainNumArr));
});
function CSVToArray( strData, strDelimiter ){
// Check to see if the delimiter is defined. If not,
// then default to comma.
strDelimiter = (strDelimiter || ",");
// Create a regular expression to parse the CSV values.
var objPattern = new RegExp(
(
// Delimiters.
"(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +
// Quoted fields.
"(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
// Standard fields.
"([^\"\\" + strDelimiter + "\\r\\n]*))"
),
"gi"
);
// Create an array to hold our data. Give the array
// a default empty first row.
var arrData = [[]];
// Create an array to hold our individual pattern
// matching groups.
var arrMatches = null;
// Keep looping over the regular expression matches
// until we can no longer find a match.
while (arrMatches = objPattern.exec( strData )){
// Get the delimiter that was found.
var strMatchedDelimiter = arrMatches[ 1 ];
...