Javascript 通过使用array.push方法,可以添加元素,但它';它也覆盖了最后一个对象
我在这里遇到一个奇怪的问题,每次我将obj推到数组时,数组长度都会如预期的那样增加,但我最后推的对象会覆盖所有其他对象,我无法识别我的错误,因此请帮助我。提前感谢,请检查以下代码Javascript 通过使用array.push方法,可以添加元素,但它';它也覆盖了最后一个对象,javascript,jquery,arrays,Javascript,Jquery,Arrays,我在这里遇到一个奇怪的问题,每次我将obj推到数组时,数组长度都会如预期的那样增加,但我最后推的对象会覆盖所有其他对象,我无法识别我的错误,因此请帮助我。提前感谢,请检查以下代码 var tablehead = {}; var experimentsData = []; var obj = {}; var remoteSheet = response.result.values; remoteSheet.filter(function(innerArrayItem) { if (
var tablehead = {};
var experimentsData = [];
var obj = {};
var remoteSheet = response.result.values;
remoteSheet.filter(function(innerArrayItem) {
if (i == 0) {
tablehead = innerArrayItem;
i++;
} else {
$.each(tablehead, function(key, value) {
obj[value] = innerArrayItem[key];
});
experimentsData.push(obj);
}
});
因为你每次都在推同一个物体
obj
只创建一次,每次迭代时,您都会覆盖在上一次迭代中放入的数据
var experimentsData = [];
// var obj = {}; <-- don't define obj here
var remoteSheet = response.result.values;
remoteSheet.filter(function(innerArrayItem) {
if (i == 0) {
tablehead = innerArrayItem;
i++;
} else {
var obj = {} // <-- define it here
$.each(tablehead, function(key, value) {
obj[value] = innerArrayItem[key];
});
experimentsData.push(obj);
}
});
var-experimentsData=[];
//var obj={};什么是tablehead
,在哪里定义了i
?remoteSheet
值的示例在这里也会有很大帮助。您的'filter(),'handler函数中也没有返回任何内容,因此它是非常冗余的。您使用的是Array#filter
for…?只是为了过滤“remoteSheet”数据,然后返回一些内容。。如果您只想迭代它,请改用Array 35; forEach
。因为您使用相同的对象,并且它在每个索引中都有相同的引用……现在每个人都使用Array#filter
来迭代数组。。这太疯狂了。@ganeshstate您应该接受答案,然后单击upvote控件旁边的复选框。