Sto lavorando su un sistema di permessi con profondità variabile; a seconda della complessità di una pagina, potrebbero esserci più o meno livelli. Ho cercato StackOverflow per scoprire se questo è stato chiesto prima, non riuscivo a trovarlo.Come verificare la profondità di un oggetto?
Se ho questo oggetto:
{foo:{bar:{baz : 'baa'}}}
ho bisogno di tornare 3, dispone di 3 livelli ad esso.
Con questo oggetto:
{abc: 'xyz'}
Dovrebbe essere 1.
Questo è quello che ho finora:
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;
}
Il problema è che conta elementi sorella troppo. In realtà non sta ottenendo profondità, sta contando tutti i membri di un oggetto.
Qual è l'argomento "livello" in questa funzione? –
Si chiamerebbe 'utils.depthOf ({})' - il secondo parametro è usato solo per la ricorsione, motivo per cui la seconda riga sta dicendo "il livello è uguale al livello se il livello non è falso, se il livello è falso, il livello è uno " –
A parte questo, questa funzione in realtà non funziona. Se ci sono elementi secondari, li conta come profondità piuttosto che come "larghezza". - Ci sto ancora lavorando. –