Как сравнить массивы и количество обновлений? - PullRequest
0 голосов
/ 02 марта 2019

У меня есть два массива inventory и cartItems.Оба массива содержат объекты. Массив

  • inventory содержит список всех продуктов.

  • cartItems массивтот, где пользователь добавляет товары в корзину.

Я хочу сравнить массивы и затем отобразить предметы, оставшиеся в инвентаре.

ниже приведен код:

var inventory =
[
    { item: "apples", price: 19.95, qty: 50 },
    { item: "oranges", price: 20.99, qty: 40 },
    { item: "pineapples", price: 40.00, qty: 60 },
    { item: "lemons", price: 10.12, qty: 100 }
]

function MyBasket() {
  this.totalItems = []
}

MyBasket.prototype.addItems = function(item, price, qty) {
  this.totalItems.push({
    "item": item,
    "price": price,
    "qty": qty
  });
}

MyBasket.prototype.cartItems = function() {
  return this.totalItems;
}

var cart = new MyBasket();

cart.addItems("banana", 10, 2);
cart.addItems("mango", 10, 3);
cart.addItems("x", 5, 4);

console.log('cart items', cart.cartItems())

1 Ответ

0 голосов
/ 02 марта 2019

Вы можете просмотреть cartItems и обновить inventory, используя forEach и find

var inventory = [{item:"apples",price:19.95,qty:50},{item:"oranges",price:20.99,qty:40},{item:"pineapples",price:40.00,qty:60},{item:"lemons",price:10.12,qty:100}];

const cart = {
  totalItems: [{
    item: "apples",
    price: 20,
    qty: 2
  }, {
    item: "oranges",
    price: 21,
    qty: 3
  }]
}

function updateInventory() {
  cart.totalItems.forEach(i => {
    const item = inventory.find(o => o.item === i.item);
    
    if(item)
      item.qty -= i.qty;
  })
}

updateInventory()
console.log(inventory)
...