8
私は、可変深度のパーミッションシステムに取り組んでいます。ページの複雑さにもよりますが、多かれ少なかれレベルが存在する可能性があります。私は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;
}
問題は、それがあまりにも姉妹要素をカウントしています。それは実際には深みを得ることはありません、それはオブジェクトのすべてのメンバーを数えています。
この関数の引数 "level"とは何ですか? –
これは、 'utils.depthOf({}) 'と呼ばれて呼び出されます.2番目のパラメータは再帰にのみ使用されるため、2行目は" levelがfalseでない場合はlevelと等しくなります。レベルは1です " –
それ以外のところ、この関数は実際には機能しません。姉妹要素がある場合、それは「幅」ではなく深度としてカウントされます。 - 私はまだそれに取り組んでいます。 –