我正在研究具有可变深度的权限系统;根据页面的复杂性,可能会有更多或更少的级别。我搜索了 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;
}
问题是它也计算了姐妹元素。它实际上并没有得到深度,它正在计算一个对象的所有成员。