每次我将obj推向数组时,我都面临着一个奇怪的问题。数据长度正在按预期增加但是我最后推送的对象覆盖了所有其他对象,我无法识别我的错误所以请帮帮我。在此先感谢请检查以下代码。
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);
}
});
答案 0 :(得分:2)
因为您每次都在推送相同的对象。 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);
}
});
另外,filter
是一种迭代数组的坏方法,我建议切换到基本的for
循环。