2016-06-22 14 views
0

JSONオブジェクトをサーバに送信する必要があります。この場合、プロパティ がネストされている必要があります。例えば、データオブジェクトは、2レベル深くネストすることができる。しかし、単にオブジェクトを直接宣言することはできません:Javascriptでネストされたオブジェクトのプロパティを定義する

var foo = {}; 
foo.bar.bartwo = "data"; //Uncaught TypeError 

現在、ネストしたオブジェクトレイヤーを手動で作成することでこれを回避しようとしています。

var foo = {}; 
foo.bar = {}; 
foo.bar.bartwo = "data"; //Successful 

しかし、オブジェクトが複数のレベルの入れ子を必要とする場合、これはすぐに手を抜ける可能性があります。

この問題を処理するには、JavascriptまたはJqueryでより良い方法がありますか(2番目のコード例を単にゴールするだけでは機能しません)?

明確化:ネストされたプロパティに直接アクセスできるようにするソリューションは、を除いてすべての中間プロパティも作成する必要があります。

+4

'var foo = {bar:{bartwo:" data "}};' – naththedeveloper

+0

は単純な "名前空間"機能を作成します。またはgoogle one – dfsq

+0

@naththedeveloperあなたのソリューションはより簡潔ですが、実際には根本的な問題は解決しません。ネスティングでは、複数のレベルを動的に生成する必要がありますが、これはあなたの例では機能しません。 –

答えて

0

ネストされたオブジェクトを定義することなく、つまりfoo.bar = {}; あなたはそれ を使用して最初に定義する必要がありますjavascriptオブジェクト、それに を値を使用するか、または割り当てることはできませんそれ以外の場合は、すなわちfoo.barあなたに「未定義」というエラーを与える未定義である

0

この

ない小さなメソッドを作成します
function nested(x, y){ 
nestedA=""; 
parts = x.split('.'); 
    for(i=0; i<parts.length; i++) { 
    nestedA += parts[i]; 
    eval(nestedA + ' = {}'); 
    nestedA += '.'; 
} 
eval(nestedA.slice(0,-1)+ '= "'+y+'"'); 
} 
nested('foo.bar.bartwo', "data"); 
+0

コードをテストしてください。いくつかの構文上の問題があります。 – 4castle

+0

ありがとうございました –

+0

'。='は何ですか?それは連結ですか? – 4castle

関連する問題