2017-01-12 8 views
0

多子子のJsonオブジェクト(javascriptで)を作成したいと思います。しかし親にも値がなければならないので、コードは次のように実行できます。入れ子の子を持つJsonの親の値

var parent = { 
     "child": { 
     "ownValue": "valueChild", 
     "grandchild": "ValueGrandChild", 
     } 
    }; 
parent.child.grandchild // return "valueGrandChild" 
parent.child // return "valueChild" 

これはjavascriptで可能ですか?

+0

はいいいえ – Vineet

+0

よろしくお願いします。 –

+0

私の意見では、私たちは自分たちで大変なことをしています。あなたのコード構造は何か、ループしているのか、手動で作成したいのか分かりません。しかし、念頭に置いておくべきことは1つだけです。そのような順序で値を割り当てる必要があります。ループを使用するか、静的に割り当てます。 parent ['child'] = 'valuechild'; parent ['child'] ['grandchild'] = 'grandvaluechild'; 'オブジェクトに' ['' ']'表記を使用することもできます – Vineet

答えて

0

質問がわかりましたら(私はわかりません)、問題を解決するために別の方法を使用します。

ご存じのように、jsonオブジェクトには属性はなく、子プロパティのみがあります。 childというプロパティを使用して、親オブジェクトの子オブジェクト(サブツリー)を格納できます。

var parent = { 
    "value": "Parent own value", 
    "child": { 
    "grandchild": {"value": "ValueGrandChild", "child": {}} 
    "anotherchild": {"value": "anotherChildValue", "child": {}} 
    } 
}; 

子供と属性が良く分離され、あなたはそれらに対処することができます(と「適切な」オブジェクトのプロパティ)以下のように:

parent.child.grandchild.value // returns "valueGrandChild" 
parent.value // returns "Parent own value" 

あなたはまた、いくつかの他のの商品持つことができます

var how_many_child = Object.keys(parent.child).length 
var a_child = parent.child.anotherchild 
var how_many_nephew = Object.keys(a_child.child).length 
a_chid.value; // returns "anotherChildValue" 
parent.child.anotherchild.value; // returns "anotherChildValue" 
0

質問を理解しても、オブジェクトの書式設定に誤りがあるかどうかは不明です。あなたが ";" "、"に。 (下をご覧ください)

から変更してください。

var parent = { 
    "child": { 
    "ownValue": "valueChild"; 
    "grandchild": "ValueGrandChild"; 
    } 
}; 

to;

var parent = { 
    "child": { 
    "ownValue": "valueChild", 
    "grandchild": "ValueGrandChild", 
    } 
}; 

これはvalueChildを使用して取得できました。

parent.child.ownValue 
+0

がタイプミスを修正したことに同意します。 –

0

オブジェクトを取得して別の値を取得したとしても、そのオブジェクトを正常に使用することはできなくなります。オブジェクトへの参照はすべて値を参照するだけです(ネストしたオブジェクト参照を無効にする)。あなたは明らかに、オブジェクトに結びつけたいそれぞれの値に対して "ownValue"プロパティを使用することができます。

+0

これは別の種類のオブジェクトで可能ですか?ネストされた関数やそのようなものが好きですか? –

+0

@ stage-newfishいいえ、JavaScriptのすべては、オブジェクト型またはプリミティブ型のいずれかです。あなたが望むものを(私が正しく理解すれば)サポートする特別なタイプはありません。文字列などのすべてのプリミティブ型は不変であり、そのままでは追加または変更できません。プリミティブ型は実際に割り当てられるとコピーされます。 –

関連する問題