JSFiddle - React, Tailwind, and code Playground

by krisselden

JavaScript

var injections = [
    {"name": "B"},
    {"name": "A", "before": "B"},
    {"name": "afterC", "after": "C"},
    {"name": "afterB", "after": "B"},
    {"name": "C", "after": "B"}
];

function compare(a, b) {
    if (a.before) {
        if (!b.before || a.before === b.name) {
            return -1;
        }
    } else if (a.after) {
        if (!b.after || a.after === b.name) {
            return 1;
        }
    }

    if (b.before) {
        if (!a.before || b.before === a.name) {
            return 1;
        }
    } else if (b.after) {
        if (!a.after || b.after === a.name) {
            return -1;
        }
    }

    return 0;
}

injections.sort(compare);

var i;
for (i = 0; i < injections.length; i++) {
    $(document.body).append($('<p></p>').text(injections[i].name));
}