簡體   English   中英

如何將購物車陣列與產品陣列聯系起來?

[英]How to link shopping cart array with products array?

在這里,我有一系列產品可以添加產品到籃子里 在我通過ID將其添加到購物籃后,如何從陣列中刪除某些產品

  //Product class
    function Product(options) {
      this.id = options.id;
      this.name = options.name;
      this.cost = options.cost;
      this.quantity = options.quantity;
      this.shortDescription = options.shortDescription;
      this.fullDescription = options.fullDescription;
    }

//Basket class
function Cart() {
  this.items = [];
}

//Add product in basket
Cart.prototype.addItem = function(options) {
  //If we find the same element in array by name, just +1 to quantity in basket
  options.quantity = 1;
  for (var i in this.items) {
    if (this.items[i].id === options.id) {
      this.items[i].quantity += options.quantity;
      return;
    }
  }
  var item = new Product(options);
  this.items.push(item);
};


var arrayOfProducts = [
  {id:1, name:'book', cost:5.45, quantity:5, shortDescription: 'Short description about book', fullDescription: 'Full description about book'},
  {id:2, name:'pan', cost:7.31, quantity:2, shortDescription: 'Short description about pan', fullDescription: 'Full description about pan'},
  {id:3, name:'cup', cost:9.37, quantity:4, shortDescription: 'Short description about cup', fullDescription: 'Full description about cup'},
]

cart.addItem(arrayOfProducts [0]);
cart.addItem(arrayOfProducts [0]);
cart.addItem(arrayOfProducts [1]);

我們將在Cart的數組中看到這一點

id:1, name:book, cost:5.45, quantity:2, short description: Short description about book, full description: Full description about book
,id:2, name:pan, cost:7.31, quantity:1, short description: Short description about pan, full description: Full description about pan

首先,對於您的Product類,您應該有另一個值,該值反映該項目的計數器。 這樣,如果有人添加了兩個相同的東西,你只需增加該計數器而不是添加同一個對象的整個額外實例。

然后,刪除東西會更容易。 首先,檢查他們要刪除的項目是否有一個大於1的計數器。在這種情況下,只需減少計數器。 或者,如果他們只有該項的一個實例,請使用過濾器將其刪除:

myArray = myArray.filter(function( obj ) {
    return obj.id!== 1;
});

這將創建一個帶有新引用的新數組btw。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM