2010-09-14 60 views
4

我想創建一個新對象併爲存儲在某個json中的每個數組分配一些屬性。我有這個主要工作除...在for-in-loop中創建新對象

for (var i in json) { 

      a = 0; 
      a++; 
      a = new Object(); 

      for (var key in json[i]) { 
       var Key = key; 
       var Value = json[i][key]; 
       a[Key] = Value; 
      } 
      a.outputProperties(); 
     } 

當我輸出的對象屬性,一切都是未定義的。

如果我在循環外部創建一個對象併爲其分配屬性,它似乎可以正常工作,只不過第一組屬性會被以下內容覆蓋。不知道爲什麼我不能動態創建對象並在循環內分配屬性。

+0

您應該可以。我們可能需要看到更多的代碼(例如,sup2來自哪裏?)。 – palswim 2010-09-14 17:21:05

+1

a = 0;一個++; a =新補充();在每次迭代中,您將設置爲0,然後是1,然後是一個對象。那是怎麼回事? – Ronald 2010-09-14 17:21:45

+0

我想爲每個循環迭代創建一個新對象。我想我可以增加一個變量值並使用它來創建新的對象名稱。這沒有用。 – chromaloop 2010-09-14 21:14:58

回答

1

戴夫史密斯的答案是非常接近我所需要的,但它並沒有在循環內創建新的對象。這裏是我提供了所需結果的更新代碼:

for (var i in json) { 
      theGoods["obj"+i] = new Object(); 
      for (var key in json[i]) { 
       theGoods["obj"+i][key] = json[i][key]; 
      } 
      theGoods["obj"+i].outputProperties(); 
     } 

每個新對象現在都存儲在一個數組中,theGoods []; 我現在可以通過寫入類似的文字來引用該對象:theGoods["obj2"].someMethod();

3

你從未真正設置過a的任何屬性。您只需設置sup2的屬性。在一個側面說明你有其他不必要的東西在那裏,像var Key = key;試試這個:

for (var i in json) { 
    var a = new supplement(); 
    for (var key in json[i]) { 
     a[key] = json[i][key]; 
    } 
    a.outputProperties(); 
} 
+0

謝謝,這個伎倆! – chromaloop 2010-09-14 18:10:32

1

您粘貼不看我的權利,在它的意義的代碼似乎並沒有掛在一起。

做這些三條線做的事:

 a = 0; 
    a++; 
    a = new supplement(); 

你似乎做三件矛盾的事情了那裏。我的猜測是,a意味着成爲你不顯示的外部事物的索引。

那麼什麼是

 sup2 

應該是,以補充某些關係()你早些時候?

+0

我在粘貼代碼時犯了一些錯誤,然後爲了便於理解而嘗試進行概括。去顯示它不支付代碼空腹! =) – chromaloop 2010-09-14 18:08:44

0
for (var i in json) { 

     a = new supplement(); 

     for (var key in json[i]) { 
      var Value = json[i][key]; 
      a[Key] = Value; 
     } 
     a.outputProperties(); 
    }