JSFiddle - React, Tailwind, and code Playground

by tonytlwu

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
<pre id="debug"></pre>

JavaScript

function splitByCommas(str) {
  if (str === undefined || str === null) {
    return [];
  }

  if (_.isArray(str)) {
    return _.flatten(_.map(str, splitByCommas));
  }

  if (typeof str !== 'string') {
    return [str];
  }

  // Split a string by commas but ignore commas within double-quotes using Javascript
  // https://stackoverflow.com/questions/11456850/split-a-string-by-commas-but-ignore-commas-within-double-quotes-using-javascript
  var regexp = /(".*?"|[^",]+)(?=\s*,|\s*$)/g;
  var arr = [];
  var res;
  while ((res = regexp.exec(str)) !== null) {
    arr.push(res[0].replace(/(?:^")|(?:"$)/g, '').trim());
  }
  
  return _.filter(_.uniq(_.map(arr, function (s) {
    return ('' + s).trim();
  })), function (value) {
    return [undefined, null, '', NaN].indexOf(value) === -1;
  });
}

// document.querySelector('#debug').innerHTML = JSON.stringify(splitByCommas('Management, Finance, Business'));
document.querySelector('#debug').innerHTML = JSON.stringify(splitByCommas(['Management, Finance, Business', 'A', 'B, C', ['D', 'E']]));