1

オブジェクトがあるとします:

obj:{
   child:{
      x:12,
      y:50
   },
   key1:"value1",
   key2:"value2"
}

次のように、オブジェクトをトラバースしたい場合:

for (var i in obj) {

}

オブジェクトに子オブジェクトがあるかどうかを判断するにはどうすればよいので、それをトラバースできますhasOwnProperty。メソッドを使用できることはわかっていますが、この状況では、子オブジェクトの名前が何であるかわかりません。

4

3 に答える 3

1

このスニペットがお役に立てば幸いです。

for (var i in obj) {
    if (obj.hasOwnProperty(i))
        console.log(typeof obj[i])
}
于 2012-06-11T02:57:58.640 に答える
1

これを使用して、プロパティにオブジェクトが含まれているかどうかを確認できます。

for (var i in obj) {
    if(obj.hasOwnProperty(i) && obj[i] instanceof Object) {
        // obj[i] is a child object
    }
}

注意事項: 関数と配列はどちらも Javascript のオブジェクトであることを覚えておいてください。instanceof Functionと を使用している場合は、個別にテストできますinstance of Array

于 2012-06-11T02:59:03.060 に答える
0

再帰関数:

var obj = { a : { aa : 'aa'
                , ab : 'ab' }
          , b : 'b'
          , c : 'c'
          };


function listKeyValue (o){
   for (var prop in o){
      if(typeof o[prop] === 'object') 
         listKeyValue(o[prop]);
      else 
         console.log(prop,o[prop]);
   }
}

listKeyValue(obj);
于 2012-06-11T03:05:37.153 に答える