Back

the functions

// let arr = ['a', 'b', 'c', '\n', 'x', 'y', 'z'] 
function arr_to_csv_string(arr) {

  let csv_string = '';
  let n = arr.length - 1;

  for (let i = 0; i < n; i++) {
   csv_string += '"' + arr[i] + '",';  // USING DOUBLE-QUOTES TO WRAP EACH ELEMENT
  }
  csv_string += '"' + arr[n] + '"';  // WRAP IN DOUBLE-QUOTES 

  return csv_string;
}
abc
xyz
 // arr = [['a', 'b', 'c'], ['p', 'q', 'r'], ['x', 'y', 'z']] 
function arr_of_arr_to_csv_string(arr) {
  
  let csv_string = '';
  let n = arr.length;
  
  // EACH ROW 
  for (let i = 0; i < n; i++) {
   csv_string += arr_to_csv_string(arr[i]);
   csv_string += '\n';
  }

  return csv_string;
}
function export_csv_string(csv_string) {

  let a = document.createElement('a');
  a.href = 'data:,' + encodeURI(csv_string); // THIS IS REALLY KEY 
  a.target = '_blank';
  a.download = 'name.csv';
  a.click();
  a.remove();
}
function export_as_string(arr) {
  let x = JSON.stringify(arr);
  let a = document.createElement('a');
  a.href = 'data:,' + encodeURI(x);
  a.target = '_blank';
  a.download = '.json';
  a.click();
  a.remove();
}

how to use

 // think of \n as being on the same line as 'c' 
 let arr = ['a','b','c','\n','x','y','z'];
 
 let csv_string = arr_to_csv_string(arr);
 export_csv_string(csv_string);
function arr_to_csv_string(arr) {
  let csv_string = '';
  let n = arr.length - 1;
  for (let i = 0; i < n; i++) {
   csv_string += '"' + arr[i] + '",';
  }
  csv_string += '"' + arr[n] + '"';
  return csv_string;
}
function arr_of_arr_to_csv_string(arr) {
  let csv_string = '';
  let n = arr.length;
  for (let i = 0; i < n; i++) {
   csv_string += arr_to_csv_string(arr[i]);
   csv_string += '\n';
  }
  return csv_string;
}
function export_csv_string(csv_string) {
  let a = document.createElement('a');
  a.href = 'data:,' + encodeURI(csv_string);
  a.target = '_blank';
  a.download = 'name.csv';
  a.click();
  a.remove();
}