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

问题描述 投票:1回答:1

我有两个阵列inventorycartItems。两个数组都有对象。

  • 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())
javascript arrays prototype
1个回答
1
投票

你可以循环使用cartItems并使用inventoryforEach更新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)
© www.soinside.com 2019 - 2024. All rights reserved.