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']]));