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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, hier gehen Sie buddy, eine Funktion, die macht genau das, was Sie brauchen!
Viel einfacher, als wir dachten, es wäre. Die Frage war, wie es war erhöht, es sollte nicht rekursiv hinzufügen, sondern immer der Unterste und hinzufügen ein, wählen Sie dann die max zwischen zwei Geschwistern.
utils.depthOf({})
- der zweite parameter wird nur verwendet, damit die Rekursion, das ist der Grund, warum die zweite Zeile sagt "Ebene ist gleich der Ebene, wenn die Ebene ist nicht falsch, wenn level ist false, Niveau ist eine"document
Objekt ist wirklich sehr, sehr tief. Das ist buchstäblich einestack_overflow
- aber würden Sie das nennen von nurutils.depthOf(document)
{test: [{...}, {...}]}
Können wir mit der reg:
JS: