I'm trying to make a recursive method in javascript but I create an infinite loop.
My idea is create a recursive method that check that has less children that maximum value.
This is my code but as I said I dont know why create an infinite loop.
export const checkMaximumChildren = (hierarchy, maximum) => {
let hasMoreThanMaximumChildren = false;
if (hierarchy.children.length > maximum) {
hasMoreThanMaximumChildren = true;
} else {
const dmaExtractor = (children) => {
children.forEach((child) => {
if (child.children.length > maximum) {
hasMoreThanMaximumChildren = true;
return hasMoreThanMaximumChildren;
}
if (
child &&
child.children &&
Array.isArray(child.children) &&
child.children.length > 0
) {
dmaExtractor(data.children);
}
});
};
if (
hierarchy &&
hierarchy.children &&
Array.isArray(hierarchy.children) &&
data.children.length > 0
) {
dmaExtractor(hierarchy.children);
}
}
return hasMoreThanMaximumChildren;
};
const data = [{
"id": 1,
"parentId": null,
"selected": false,
"children": [{
"id": 2,
"parentId": 1,
"selected": false,
"children": [{
"id": 3,
"parentId": 2,
"selected": false,
"children": [{
"id": 4,
"parentId": 3,
"selected": false,
"children": []
}]
}]
}]
}, {
"id": 1,
"parentId": null,
"selected": true,
"children": []
}, {
"id": 1,
"parentId": null,
"selected": true,
"children": []
}]
Edit
Sorry I'm stupid...
dmaExtractor(data.children); by dmaExtractor(child.children);
