私は可変深さの権限システムに取り組んでいます。ページの複雑さに応じて、レベルが増減する可能性があります。StackOverflow を検索して、これが以前に尋ねられたかどうかを調べましたが、見つかりませんでした。
このオブジェクトがある場合:
{foo:{bar:{baz : 'baa'}}}
3 を返す必要があります。3 つのレベルがあります。
このオブジェクトで:
{abc: 'xyz'}
それは 1 でなければなりません。
これは私がこれまでに持っているものです:
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;
}
問題は、姉妹要素もカウントされることです。実際には深さを取得していません。オブジェクトのすべてのメンバーをカウントしています。