Build a Smart Pantry Restocker - Build a Smart Pantry Restocker

Tell us what’s happening:

  1. The functions should work together to process a shipment and group the resulting actions.

Your code so far

function parseShipment(rawData)
{
  let ans
  let obj = {}
  let ansArr = []
  let a = Array.isArray(rawData)
  console.log(a)
  for(let arr of rawData)
  {
    ans = arr.split("|")
  }
  if(ans[ans.length-1].includes("-")){obj.zone = "general"}
  for(let i = 0; i < ans.length; i++)
  {
    if(i == 0){obj.sku = ans[i]}
    else if(i == 1){obj.name = ans[i]}
    else if(i == 2){obj.qty = parseInt(ans[i])}
    else if(i == 3){obj.expires = ans[i]}
    else if(i == 4){obj.zone = ans[i]}
  }
  ansArr.push(obj)
  return ansArr
}

function planRestock(pantry,shipment)
{
  
  let ansArr = []
  let obj = {}
  
  
  for(let i = 0; i < shipment.length; i++)
  {
    
    console.log(shipment.length + " length of shipment")
    //->Sus for step 7
    obj.item = shipment
    //<-
    //console.log(shipment[i].qty)
    if(pantry.sku == shipment.sku){obj.type = "restock"}
    if(shipment[i].qty <= 0){obj.type = "discard"}
    if(pantry.length == 0){obj.type = "donate"}
    ansArr.push(obj)
  }
  
  return ansArr
}

function groupByZone(actions)
{
  /*[{ type: "restock", item: { sku: "A1", zone: "fridge" } },
  { type: "restock", item: { sku: "B1", zone: "pantry" } }, 
];*/
  let ans = {}
  for(let zone in actions)
  {
    if(actions[zone]["item"].zone == "fridge")
    {
      ans.fridge = [actions[zone]]
    }
    else if(actions[zone]["item"].zone == "pantry")
    {
      ans.pantry = [actions[zone]]
    }

  }
  return ans
}

function clonePantry(pantry)
{
  const arr = [].concat(pantry)

  for(let stuff of pantry)
  {
    arr.push(stuff)
    //arr.push()
  }
  
  return JSON.parse(JSON.stringify(arr))
}

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:151.0) Gecko/20100101 Firefox/151.0

Challenge Information:

Build a Smart Pantry Restocker - Build a Smart Pantry Restocker

GitHub Link: freeCodeCamp/curriculum/challenges/english/blocks/lab-smart-pantry-restocker/69a5f35669099ed52f8563b1.md at main · freeCodeCamp/freeCodeCamp · GitHub

I have 16 complete now just 17 Failed: 17. You should log the resulting actions grouped by zones.

function parseShipment(rawData)
{
  let ans
  let obj = {}
  let ansArr = []
  let a = Array.isArray(rawData)
  console.log(a)
  for(let arr of rawData)
  {
    ans = arr.split("|")
  }
  if(ans[ans.length-1].includes("-")){obj.zone = "general"}
  for(let i = 0; i < ans.length; i++)
  {
    if(i == 0){obj.sku = ans[i]}
    else if(i == 1){obj.name = ans[i]}
    else if(i == 2){obj.qty = parseInt(ans[i])}
    else if(i == 3){obj.expires = ans[i]}
    else if(i == 4){obj.zone = ans[i]}
  }
  ansArr.push(obj)
  return ansArr
}

function planRestock(pantry,shipment)
{
  
  let ansArr = []
  let obj = {}
  
  
  for(let i = 0; i < shipment.length; i++)
  {
    console.log(shipment[i])
    console.log(shipment.length + " length of shipment")
    //->Sus for step 7
    obj.item = shipment[i]
    //<-
    //console.log(shipment[i].qty)
    if(pantry.sku == shipment.sku){obj.type = "restock"}
    if(shipment[i].qty <= 0){obj.type = "discard"}
    if(pantry.length == 0){obj.type = "donate"}
    ansArr.push(obj)
  }
  
  return ansArr
}

function groupByZone(actions)
{
  /*[{ type: "restock", item: { sku: "A1", zone: "fridge" } },
  { type: "restock", item: { sku: "B1", zone: "pantry" } }, 
];*/
  let ans = {}
  for(let zone in actions)
  {
    if(actions[zone]["item"].zone == "fridge")
    {
      ans.fridge = [actions[zone]]
    }
    else if(actions[zone]["item"].zone == "pantry")
    {
      ans.pantry = [actions[zone]]
    }

  }
  return ans
}

function clonePantry(pantry)
{
  const arr = [].concat(pantry)

  for(let stuff of pantry)
  {
    arr.push(stuff)
    //arr.push()
  }
  
  return JSON.parse(JSON.stringify(arr))
}

console.log()