可能在这里遗漏了一些非常明显的东西,但花了很多时间测试它并且无法弄清楚发生了什么。
我正在尝试遍历数组中的每个项目(dataArray),将其拆分并将其放入临时数组中。然后浏览这个临时数组,并使用我在另一个数组(columnNames)中的一些列名创建一个临时对象。然后将此临时对象推送到对象(产品)数组中。
e.g.
col names ['A', 'B', 'C']
temparray ['a', 'a', 'a']
into ==>
products [{'A':'a','B':'b','C':'c'}]
这没关系,我在最后得到的数组包含正确数量的对象,但它们都是相同的对象(最后一个被处理的对象)。当我在console.log中每个tempObj时,我可以看到它们是不同的,但由于某种原因,这并没有反映在最终的数组中。
有什么想法吗?
var tempArray = [],
tempObj = {};
//run through each row if there is data
if (dataArray != null || dataArray != []) {
try {
for (var i = 0; i < dataArray.length; i++) {
//split row by ','
tempArray = dataArray[i].split(',');
for (var y = 0; y < tempArray.length; y++) {
tempObj[columnNames[y]] = tempArray[y];
//onsole.log(tempObj[columnNames[y]]);
}
console.log(tempObj);
products[i] = tempObj;
}
} catch (e) {
console.error(e);
} finally {
console.log(products);
console.log("Seperated into " + products.length + " products...");
ProductUpdater(products, merchantID)
}
}
}
注意:以及使用“products [i] = tempObj”将它添加到我尝试过的数组.push没有运气。
答案 0 :(得分:0)
感谢斜视找到答案:
必须将tempObj的声明移动到第一个for循环中。
var tempArray = [];
//run through each row if there is data
if (dataArray != null || dataArray != []) {
try {
for (var i = 0; i < dataArray.length; i++) {
var tempObj = {};
//split row by ','
tempArray = dataArray[i].split(',');
for (var y = 0; y < tempArray.length; y++) {
tempObj[columnNames[y]] = tempArray[y];
//onsole.log(tempObj[columnNames[y]]);
}
//console.log(tempObj.ean);
products[i] = tempObj;
}
} catch (e) {
console.error(e);
} finally {
console.log(products);
console.log("Seperated into " + products.length + " products...");
ProductUpdater(products, merchantID)
}
}