数组属性的第n个对象被覆盖

时间:2019-02-13 08:48:36

标签: javascript arrays object

当我尝试将新对象写入数组的第n个位置时,该对象在数组中的属性将被覆盖。

array[n][articleID].amount

上面的代码应该为数组的第n个位置的单个对象返回唯一的数量,但不是。如果我只让一次for循环运行一次,只要正确地存储了每个articleID的数量,但是当我运行两次时,来自第二个对象的信息就会覆盖第一个对象的amount属性。

我有许多订单,这些订单经过解析并添加到orderList中。文章及其ID解析为articleList。将orderList中的一个元素与articleList一起运行到类“发票”中,将返回一个对象数组,按其I​​D排序。

例如,商品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

0 个答案:

没有答案