JSFiddle - React, Tailwind, and code Playground
by Mohamed Rias
HTML
<div id="results">
</div>
JavaScript
var resolver, //fn
source = {
"c1": [
"c2",
"c3"
],
"c3": [
"c4",
"c5",
"c1"
],
"c4": [
"c1"
],
"c5": [
"c3"
]
};
resolver = function (dependencies) {
var order = [],
depen = [];
var arrayWalker = function (temp) {
temp.forEach(function (second) {
if (second in dependencies) {
if (depen.indexOf(second) == -1) {
depen.push(second);
arrayWalker(dependencies[second]);
if (order.indexOf(second) == -1) order.push(second);
}
} else {
if (order.indexOf(second) == -1) order.push(second);
}
});
};
for (var key in dependencies) {
depen = []; // to check for circular dependencies
depen.push(key);
arrayWalker(dependencies[key]);
if (order.indexOf(key) == -1) order.push(key);
}
return order;
};
console.log(resolver(source).join("\n"));