JSFiddle - React, Tailwind, and code Playground

JavaScript

function split_except_within(text, split_char, encapsulator_char, escape_char) {
    var start = 0
    var encapsulated = false
    var fields = []
    for (var c = 0; c < text.length; c++) {
        var char = text[c]
        if (char === split_char && ! encapsulated) {
            fields.push(text.substring(start, c))
            start = c+1
        }
        if (char === encapsulator_char && (c === 0 || text[c-1] !== escape_char) )             encapsulated = ! encapsulated
    }
    fields.push(text.substring(start))
    return fields
}

var text = 'a,b,c,,d,"f,g","h\\",j",k,'
var fields = split_except_within(text, ',', '"', '\\')

console.log(fields)