2016-04-25 10 views
0

"human"オブジェクトに複数の入れ子オブジェクト(human1、human2、human3)があるとします。異なるデータオプション間のループでオブジェクトを反復する

human: { 
    "human1": { 
     "name" : "John", 
     "sex" : "male", 
     "age" : 18 
    } 

    "human2": { 
     "name" : "Peter", 
     "sex" : "male", 
     "age" : 16 
    } 

    "human3": { 
     "name" : "May", 
     "sex" : "female", 
     "age" : 19 
    } 
} 

は、私は「human1」、「human2」、または別の使用のために「human3」からのデータにアクセスするために、私はそれを容器になりたいcurrentPlayer以下と呼ばれる別のオブジェクトを、持っています。

currentPlayer: { 
    "name" : "default", 
    "sex" : "default", 
    "age" : 0 
} 

例:今日、私はcurrentPlayerジョンになりたい、それが

currentPlayer: { 
    "name" : "John", 
    "sex" : "male", 
    "age" : 18 
} 

を行くと、私はcurrentPlayerはピーターになりたい、それが行く:

私はどのように
currentPlayer: { 
    "name" : "Peter", 
    "sex" : "male", 
    "age" : 16 
} 

ループのようにcurrentPlayerのプロパティ値を繰り返しますが、キーだけではありませんか?おかげで...

+0

本当にあなたが何を求めているのか分かりませんか?最初のデータ構造の 'name:" John "でオブジェクトを見つける方法を尋ねていますか?また、部分的なオブジェクト定義だけでなく、完全なオブジェクト定義を表示してください。 'currentPlayer'として表示するのは、ある親オブジェクト内の一つのプロパティだけです。 – jfriend00

+0

私はあなたがjQuery.extend()のようなものを求めているかもしれないと思います。 – JonSG

+0

私は、既存のcurrentPlayerオブジェクトのhuman1またはhuman2またはhuman3からのプロパティ値を反復したいだけです。明確な説明が残念です... –

答えて

1

ベローコードを使用すると、Object.getOwnPropertyNames(currentPlayer)を行う、これは配列を返しますならば、あなたは

をwonted人間を取得します。このループの最後で、人間オブジェクトのすべてのプロパティ

listofhuman = Object.getOwnPropertyNames(human); 
var currentPlayer; 
for (var objHumanName in listofhuman) { 
    if (listofhuman[objHumanName].Name === "Jonh") { 
     currentPlayer = Object.create(listofhuman[objHumanName]); 
     break; 
    } 
} 

を反復処理しますあなたはオブジェクトcurrentPlayerの実際のキーである文字列の値を取得し、それらの値にアクセスすることができますcurrentPlayer[arryofProp[0]]

+0

このコードを実行するとcurrentPlayerに3人の人間がいるようですが、既存のcurrentPlayerの反復プロパティ値が必要です。明確な説明ができません。 –