2014-04-18 81 views
0

我想推入一個對象到一個jQuery $.each循環中的數組,但當我嘗試將一個對象推入一個數組時,它不能正確存儲並覆蓋之前在數組中的內容。對象不能正確推入陣列

的代碼看起來是這樣的:

var ing = {}; 
var mData = []; 

$.post('find.php', {levels:levels}, function(res){ 
     var resData = $.parseJSON(res); 
     if (resData.success == true){ 

      var mName = resData.m_name; 
      var p = resData.p; 
      $.each(p, function(key,val){ 

       ing.name = val.name; 
       ing.weight = val.weight; 
       ing.i_count = val.i_total; 
       ing.l_count = val.l_total; 
       //console.log(ing); 
       mData.push(ing); 
       //console.log(mData); 
      }); 

     } 
    }); 
console.log(mData); 

ing變量顯示我希望在循環,每次然而,當數據被壓入數組的數組的第一個索引得到由覆蓋用數據第二個指標,這導致了這樣的事情。

{ name="tea", weight="250", i_count=26, l_count = 1},{ name="tea", weight="250", i_count=26, l_count = 1} 

所以我的問題是我把數據推入數組的方式有什麼問題?

+0

什麼返回find.php?也許你可以在每個循環之前發佈resData的console.log。 – inye

回答

2

您在$.each方法之外聲明瞭變量。這有效地覆蓋每一次。 在$.each循環代碼中聲明它。

$.each(p, function(key,val){ 
    var ing = {} 
    ... 
    ... update ing variable