Wie Sie die Tiefe eines Objekts?

Arbeite ich an einem permissions-system mit variabler Tiefe; je nach Komplexität der Seite, könnte es mehr oder weniger Ebenen. Ich suchte StackOverflow zu finden, wenn dies wurde gebeten vor, konnte ihn nicht finden.

Wenn ich in diesem Objekt:

{foo:{bar:{baz : 'baa'}}}

Muss ich wieder 3, es hat 3 Ebenen.

In diesem Objekt:

{abc: 'xyz'} 

Müsste es 1 sein.

Dies ist, 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, es zählt Schwester Elementen zu. Es ist tatsächlich nicht immer die Tiefe, es zählen alle Mitglieder eines Objekts.

InformationsquelleAutor Kavi Siegel | 2012-11-23
Schreibe einen Kommentar