Adjust Gear Quantiies

by WizKid81

JavaScript

var gearArray = [{id: 1, name: "Gear 1", quantity: 5},
{id: 2, name: "Gear 2", quantity: 5},
{id: 3, name: "Gear 3", quantity: 5},
{id: 3, name: "Gear 3", quantity: 9},
{id: 4, name: "Gear 4", quantity: 5},
{id: 1, name: "Gear 1", quantity: 3, parentGear: "Gear 7"},
{id: 1, name: "Gear 1", quantity: 3, parentGear: "Gear 8"}];

var inventoryArray = [{id: 1, name: "Gear 1", quantity: 6},
{id: 2, name: "Gear 2", quantity: 2},
{id: 3, name: "Gear 3", quantity: 25},
{id: 4, name: "Gear 4"}];

function adjustQuantities(gearNeeded, inventory) {
	for (var gearItem of gearNeeded) {
  	var itemInInventory = inventory.find(element => element.id === gearItem.id);
    
    //If the item is found in the inventory, use any available inventory to satisfy gear needed
    if (itemInInventory !== undefined && itemInInventory.quantity !== undefined) {
    	var quantityNeeded = gearItem.quantity;
      var quantityRemaining = itemInInventory.quantity;
      
      gearItem.quantity = Math.max(quantityNeeded - quantityRemaining, 0);
      gearItem.inventoryQuantityUsed = (quantityNeeded - gearItem.quantity);
      itemInInventory.quantity = quantityRemaining - (quantityNeeded - gearItem.quantity);
      /* itemInInventory.quantity -= gearItem.quantity;
       gearItem.quantity = 0; */
    }
  }
}

adjustQuantities(gearArray, inventoryArray);

console.log(gearArray);
console.log(inventoryArray);