Ich arbeite an einem Berechtigungssystem mit variabler Tiefe; Abhängig von der Komplexität einer Seite kann es mehr oder weniger Ebenen geben. Ich habe StackOverflow gesucht, um herauszufinden, ob dies schon einmal gefragt wurde, konnte es nicht finden.Wie überprüft man die Tiefe eines Objekts?
Wenn ich dieses Objekt haben:
{foo:{bar:{baz : 'baa'}}}
Ich brauche es 3 zurückzukehren, hat es 3 Ebenen zu.
Mit diesem Objekt:
{abc: 'xyz'}
Es wäre 1.
Dies ist sein müssen, was ich habe, so weit:
utils.depthOf = function(object, level){
// Returns an int of the deepest level of an object
level = level || 1;
var key;
for(key in object){
if (!object.hasOwnProperty(key)) continue;
if(typeof object[key] == 'object'){
level++;
level = utils.depthOf(object[key], level);
}
}
return level;
}
Das Problem ist, zählt es Schwester Elemente zu. Es wird nicht wirklich Tiefe, es zählt alle Mitglieder eines Objekts.
Was ist das Argument "level" in dieser Funktion? –
Es würde mit 'utils.depthOf ({})' heißen - der zweite Parameter wird nur für die Rekursion benutzt, weshalb die zweite Zeile sagt "level is level wenn level nicht false ist, level ist false, Level ist eins " –
Abgesehen davon funktioniert diese Funktion nicht wirklich. Wenn es Schwesterelemente gibt, werden sie als Tiefe und nicht als "Breite" gezählt. - Daran arbeite ich noch. –