I have this weird problem which makes no sense to me. What do I miss?
class AreaManager
{
constructor()
{
this.areas = [];
this.areas.push(new Area('Area1', this));
this.areas[0].areas.push(new Area('AreaABC', this.areas[0]));
this.areas[0].areas[0].areas.push(new Area('AreaABC123', this.areas[0].areas[0]));
this.areas[0].areas.push(new Area('AreaDEF', this.areas[0]));
}
findAreaById(id, areas)
{
areas.forEach(a => {
if(a.id == id)
return a; //console.log() prints the right Area object here
else
return this.findAreaById(id, a.areas);
});
}
}
class Area
{
constructor(id, parent)
{
this.id = id;
this.areas = [];
}
}
var _Manager;
function InitManager()
{
_Manager = new AreaManager();
}
function GetSomeArea()
{
var searchID = 'AreaDEF';
var areaObject = _Manager.findAreaById(searchID);
console.log(areaObject); //this is always undefined
}
I'm not sure what's the problem here. Even if I try to return a simple string or a number in the if(a.id == id)
I get undefined.
Hope someone can explain this. Thank you