如何比较数组和更新数量?

How to compare arrays and update quantity?

我有两个数组 inventorycartItems。两个数组中都有对象。

我想比较数组,然后显示库存中剩余的项目。

下面是代码:

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())

您可以遍历 cartItems 并使用 forEachfind

更新 inventory

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)