当我尝试将新对象写入数组的第n个位置时,该对象在数组中的属性将被覆盖。
array[n][articleID].amount
上面的代码应该为数组的第n个位置的单个对象返回唯一的数量,但不是。如果我只让一次for循环运行一次,只要正确地存储了每个articleID的数量,但是当我运行两次时,来自第二个对象的信息就会覆盖第一个对象的amount属性。
我有许多订单,这些订单经过解析并添加到orderList中。文章及其ID解析为articleList。将orderList中的一个元素与articleList一起运行到类“发票”中,将返回一个对象数组,按其ID排序。
例如,商品ID“ 1041”用于宣传册架子。
orderList中的第一个订单将“ 1041”的数量属性设置为0,第二个订单将其数量属性设置为1。
最终目标是将单个发票对象附加到invoiceList,然后读取它们以将数据写入电子表格中。
// This code is what is being run when I start the program
for (var row = 0; row < maxRow; row++) {
Logger.log('row: ' + row);
invoiceList[row] = new invoice(orderList[row], articleList);
Logger.log('append orders to invoices');
Logger.log(invoiceList[0][1041].amount);
if (row == 1) {
break;
}
}
// This is how the (albeit a bit ugly)class is structured
function invoice(order, articles) {
// Set invoice details
this.name = order.name;
// Append articles from articleList to invoice
var article;
var articleID;
for (articleID in articles) {
article = articles[articleID];
this[articleID] = article;
}
// change amount of package articles
if (order.basic == 1) {
this[1036].amount = 1;
} else if (order.silver == 1) {
this[1087].amount = 1;
this[1095].amount = 1;
} else if (order.gold == 1) {
this[1088].amount = 1;
this[1096].amount = 1;
}
// Set product amounts according to order
this[1041].amount = order.brochurestand;
}
预期的日志: 将订单追加到发票 0 将订单追加到发票 0
实际日志: 将订单追加到发票 0 将订单追加到发票 1