我正在尝试将对象推入jQuery $.each
循环中的数组,但是当我尝试将对象推入数组时,它无法正确存储并覆盖先前在数组中的内容。 / p>
代码如下所示:
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 :(得分:2)
您在$.each
方法之外声明了变量。这有效地覆盖了每一次。
在$.each
循环代码中声明它。
$.each(p, function(key,val){
var ing = {}
...
... update ing variable