2017-01-12 110 views
0

我想創建一個JSON對象(在JavaScript中)與multible childeren。但父母也必須有一個值,所以代碼可以執行爲:Json父級值與嵌套的孩子

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

這是可能的JavaScript?

+0

是的,這是可能的 – Vineet

+0

oke,你可以說怎麼樣? –

+0

在我看來,我們正在努力靠自己的努力,事情也可以更容易工作。我不確定你的代碼結構是什麼,你是循環還是手動創建。但只記住一件事,你必須按照這樣的順序分配值,以便你可以隨意取回。您可以使用循環或靜態分配。試試這個'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中的所有內容都是對象或原始類型。沒有任何特殊類型可以支持你想要的東西(如果我理解正確的話)。所有基元類型(如字符串)都是不可變的,因此不能添加或更改。原始類型在分配時實際上被複制。 –