Untitled
unknown
javascript
4 years ago
2.1 kB
5
Indexable
var data = [ { id: 'a', dependencyId: 'c', label: 'A' }, { id: 'b', dependencyId: 'a', label: 'B' }, { id: 'c', dependencyId: 'b', label: 'C' } ]; // Amen andam kara lini inch vor meki dependency-n kam inqy unena inch vor dependecy. // Mi hat dependenciesCount em pahum. da kaxvacutyunner qanakn e (kara inqy unena kaxvacutyun kam iranic karan unenan kaxvacutyunner) var isCyclic = (array) => { // nax mi hat senc object em sarqum. // { // a: { id: 'a', dependencyId: 'c', label: 'A', dependenciesCount: 0 }, // b: { id: 'b', dependencyId: 'a', label: 'B', dependenciesCount: 0 }, // c: { id: 'c', dependencyId: 'b', label: 'C', dependenciesCount: 0 }, // } var obj = {}; for (var i = 0; i < array.length; i++) { var item = array[i]; obj[item.id] = { ...item, dependenciesCount: 0 } } // hima verevum stacvac objecti vrayov frum em u ete inqy uni // dependencyId, apa ira dependenciesCount-y +1 em anum. u gnum em ira dependencyId-ov // object-i dependenciesCount-y +1 em anem. for (key in obj) { var value = obj[key]; if (value.dependencyId) { value.dependenciesCount++; obj[value.dependencyId].dependenciesCount++; } } // stanum em senc ban // { // a: { id: 'a', dependencyId: 'c', label: 'A', dependenciesCount: 2 }, // because a-n kaxvac e c-ic, b-n el a-ic e kaxvac // b: { id: 'b', dependencyId: 'a', label: 'B', dependenciesCount: 2 }, // because b-n kaxvac e a-ic, c-n el b-ic e kaxvac // c: { id: 'c', dependencyId: 'b', label: 'C', dependenciesCount: 2 }, // because c-n kaxvac e b-ic, a-n el c-ic e kaxvac // } // u ete es objektneri bolori dependenciesCount-nery havasar en 2-i uremn cyclic a. var notCyclic = Object.values(obj).map(({ dependenciesCount }) => dependenciesCount).find(count => count !== 2); var cyclic = !notCyclic; return cyclic; } isCyclic(data);
Editor is loading...