2012-03-22 2 views
0

私はオブジェクト及び第二の最後のノードにデータを追加

x = { 
      "y": 55.11, 
      "color": "#4572A7", 
      "level": 0, 
      "drilldown": { 
       "name": "MSIE versions", 
       "level": 1, 
       "color": "#4572A7", 
       "categories": ["MSIE 8.0", "MSIE 6.0", "MSIE 7.0", "MSIE 9.0"], 
       "data": [ 
        { 
         "y": 33.06, 
         "color": "#4572A7", 
         "level": 1, 
         "drilldown": { 
          "name": "drilldown next level", 
          "level": 2, 
          "color": "#4572A7", 
          "categories": ["a", "b", "c"], 
          "data": [23,54,47] 
         } 
        }, 
       ] 
      } 
     } 

注意を持っている、これは実際に私がオブジェクトに新しいプロパティを追加していて任意の深さに行くが、

ようspeific形式である可能性があり
x['drilldown] = {} 
x.drilldown['data] =[] 
....and so on.... 

だから私は、オブジェクト構造の下に持っている時とします

x { 
drilldown { 
     data [ 
      drilldown { 
       data [1,2,3] 
       } 
      ] 
     } 
} 
..................... 

私がに行く必要がオブジェクト 'x'の最後の2番目の 'data'要素を読み込み、新しい値をプッシュします。

x.drilldown.data.push(10); 

だから、すべてに私がオブジェクトに最後から二番目のデータプロパティを見つける必要がある「X」は、その後、それに

Xを値をプッシュ:だから、それはこのようなものになるだろう上記の私の例に基づきます。 最後の2番目のデータ配列 .push(10);

どうすればいいですか?

==============================================私は追加

====================================

[追加ソリューション]以下のコードとそれは正常に動作します。私はそれが正しい方法であることを願っています:

var data = [10,11,12]; 
var datatemp = x.drilldown; 
var datatempvar = {}; 
for (;typeof datatemp != 'undefined';) 
{ 
    datatempvar = datatemp; 
    datatemp = datatemp.drilldown; 
} 
for(it=0;it<data.length; it++) 
    datatempvar.data.push(data[it]); 

ありがとうございます。このフォーラムは私には大いに役立ちました。

+3

、それは正確にjQueryのに持っていますか? – gdoron

+0

オブジェクトをトラバースする方法はありますか? – Prakash

+1

jQueryがDOMをたどり着いたり、オブジェクトではなくXMLになったりする可能性があります...私はそれを疑うが、プラグインを見つけることができるかもしれない。 – gdoron

答えて

0

は、データ配列は、特にいくつかのオブジェクト-で、ドリルダウンし、いくつかの平野値、複数の値が含まれている場合はどうでしょうか?あなたはさらに、2つのレベルをドリルダウンし、すべてのレベルのためにこれを行いますがまだあるかどうかをテストするループを、設定する必要がありますすべてのケースで

。破損すると、現在のレベルが要素を追加するレベルになります。

0

質問から、私はあなたが「最後から二番目」の項目、または最後をしたい場合はわかりません。

しかし、ここでは最後から二番目と最後の項目の両方を隔離する例を示します。 最後の項目の値をプッシュします。

<html> 
<head> 
<script type="text/javascript"> 

     x = { 
      "drilldown": { 
       "data": 
        { 
         "drilldown": { 
          "data": [23,54,47] 
         } 
        } 

      } 
     } 




    function pushValue(dataItem, value) { 
     var parent = null; 
     var child = dataItem; 
     while(child.drilldown != null) { 
      parent = child; 
      child = child.drilldown.data; 
     } 
     // Child is now the last item in the structure 
     // and parent is the second last item 
     child.push(value); 
    } 

    function performTest() { 
     pushValue(x, 36); 
     } 
</script> 
</head> 
<body> 
    <button onclick="performTest()">Run</button> 
</body> 
</html> 
関連する問題