Build a Smart Pantry Restocker - Build a Smart Pantry Restocker

Tell us what’s happening:

Test 17 is always failing even after logging the actions grouped by zones.

Your code so far

const rawDat = ["A10|Tomatoes|5|2027-01-01|fridge", "A10|Tomatoes|5|2027-01-01|fridge", "A10|Tomatoes|5|2027-01-01|fridge", "B21|Bananas|10|2027-01-01"];

function parseShipment(rawData) {
  let resultBefore = [];
  let result = [];
  
  for (let i = 0; i < rawData.length; i++) {
    let op = rawData[i].split("|");
    let [sku, name, qty, expires, zone] = op;
    let obj = {
      sku,
      name,
      qty: parseInt(qty),
      expires,
      zone: zone || "general"  
    };
    
    if (!resultBefore.includes(sku)) {
      resultBefore.push(sku);
      result.push(obj);
    }
  }
  return result;
}

function planRestock(pantry, shipment) {
  let result = [];
  
  for (let j = 0; j < shipment.length; j++) {
    let action = {};
    let found = false;
    
    if (shipment[j].qty <= 0) {
      action.type = "discard";
      action.item = {
        sku: shipment[j].sku,
        name: shipment[j].name,
        qty: shipment[j].qty,
        expires: shipment[j].expires,
        zone: shipment[j].zone || "general"
      };
      result.push(action);
      continue;
    }
    
    for (let i = 0; i < pantry.length; i++) {
      if (pantry[i].sku === shipment[j].sku) {
        action.type = "restock";
        action.item = {
          sku: shipment[j].sku,
          name: shipment[j].name,
          qty: shipment[j].qty,
          expires: shipment[j].expires,
          zone: shipment[j].zone || "general"
        };
        found = true;
        break;
      }
    }
    
    if (!found) {
      action.type = "donate";
      action.item = {
        sku: shipment[j].sku,
        name: shipment[j].name,
        qty: shipment[j].qty,
        expires: shipment[j].expires,
        zone: shipment[j].zone || "general"
      };
    }
    
    result.push(action);
  }
  return result;
}

function groupByZone(actions) {
  let result = {};
  
  for (let i = 0; i < actions.length; i++) {
    let zonecheck = actions[i].item.zone || "general";
    
    if (!result[zonecheck]) {
      result[zonecheck] = [];
    }
    
    result[zonecheck].push(actions[i]);
  }
  
  return result;
}

function clonePantry(pantry) {
  let strfy = JSON.stringify(pantry);
  const copy = JSON.parse(strfy);
  return copy;
}

const shipment = parseShipment(rawDat);
const pantry = [{ sku: "A10", name: "Tomatoes", qty: 3, expires: "2027-01-01", zone: "fridge" }];
const clonedPantry = clonePantry(pantry);
const actions = planRestock(clonedPantry, shipment);
const groupedActions = groupByZone(actions);

console.log("Grouped Actions:", JSON.stringify(groupedActions, null, 2));


Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36

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

hello @shubfb welcome to the forum!

try logging the groupedActions variable only.