Tell us what’s happening:
Hey y’all, MChance here.
Still need a little bit of practice to get back on track and I am, once again, stuck.
That planRestock function refuses to return my array of objects, no matter which loop I use. Where did I go wrong?
Thank you,
Happy coding!
Your code so far
const pantry = [
{ sku: "A10", name: "Tomatoes", qty: 4, expires: "2027-01-01", zone: "fridge" },
{ sku: "D43", name: "Pineapples", qty: 2, expires: "2020-01-01", zone: "general" }
];
const rawData = [
"A10|Tomatoes|5|2027-01-01",
"B21|Bananas|10|2027-01-01",
"C32|Eggs|3|2027-01-01|fridge",
"C32|Eggs|3|2027-01-01",
"D43|Pineapples|0|2027-01-01",
"E54|Peppers|-1|2027-01-01|fridge"
];
function parseShipment(rawData){
const cleanDataArr = [];
for(let row of rawData){
const cleanItem = {};
const arr = row.split('|');
cleanItem.sku = arr[0].trim();
cleanItem.name = arr[1].trim();
cleanItem.qty = Number(arr[2]);
cleanItem.expires = arr[3].trim();
cleanItem.zone = arr[4]? arr[4].trim(): "general";
cleanDataArr.push(cleanItem);
return cleanDataArr;
}
for (let cleanItem of cleanDataArr){
const itemIndex = cleanDataArr[cleanItem]
if (cleanDataArr[itemIndex] === cleanDataArr[itemIndex+1]){
cleanDataArr.splice(itemIndex+1);
}
}
return cleanDataArr;
}
function planRestock(pantry, shipment){
let parsedShipment = parseShipment(shipment);
let array = [];
for (let entry of parsedShipment) {
let action = {type: "", item: entry};
const pantryItem = pantry.find(p => p.sku === entry.sku);
if (item.qty <= 0) {
action.type = "discard";
}
else if (pantryItem) {
action.type = "restock";
} else {
action.type = "donate";
}
array.push(action);
}
return array;
}
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 OPR/131.0.0.0
Challenge Information:
Build a Smart Pantry Restocker - Build a Smart Pantry Restocker