2016-10-29 3 views
0

Здесь у меня есть массив товаров который добавить товары в корзину. Как я могу удалить продукт из массива после того, как я добавил его в корзина от 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]); 

Мы увидим это в массиве корзину

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 

ответ

0

Во-первых, для вашего класса продукта вы должны иметь другое значение, которое отражает счетчик для этого элемента. Таким образом, если кто-то добавляет две одинаковые вещи, вы просто увеличиваете этот счетчик, а не добавляете дополнительный экземпляр одного и того же объекта.

Тогда удаление предметов было бы проще. Сначала вы проверяете, имеет ли элемент, который они хотят удалить, счетчик больше 1. В этом случае просто уменьшите счетчик. Или, если у них есть только один экземпляр этого элемента, удалить его с помощью фильтра:

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

Это создает новый массив кстати с новой ссылкой.

Смежные вопросы