Tell us what’s happening:
I think my listOverdueDevices function is working correctly. I tested it with console.log(listOverdueDevices(equipmentLedger, '11/28/2026')); and got back what I think is the correct data.
But tests 18 - 20 are failing
Please advise
Your code so far
// Provided Ledger
const equipmentLedger = {
"1": { type: "PC", status: "CheckedOut", borrower: { name: "John Smith", email: "john@acme.org" }, dueDate: "11/30/2025" },
"2": { type: "Laptop", status: "CheckedIn", borrower: { name: "", email: "" }, dueDate: "" },
"3": { type: "Laptop", status: "CheckedOut", borrower: { name: "Jane Doe", email: "jane@acme.org" }, dueDate: "10/31/2025" },
"4": { type: "iPad", status: "CheckedIn", borrower: { name: "", email: "" }, dueDate: "" }
};
const checkoutDevice = (ledger, assetTag, borrower) => {
if (!Object.hasOwn(ledger, [assetTag])) {
return { ledger: ledger, message: `assetTag ${assetTag} not found` };
}
if (ledger[assetTag].status === "CheckedOut") {
return { ledger: ledger, message: `assetTag ${assetTag} already checked out` };
}
const newL = JSON.parse(JSON.stringify(ledger));
const name = borrower.name;
newL[assetTag].borrower.name = name;
newL[assetTag].borrower.email = borrower.email;
newL[assetTag].status = "CheckedOut";
return { ledger: newL, message: `assetTag ${assetTag} checked out by ${name}` };
}
const checkinDevice = (ledger, assetTag) => {
if (!Object.hasOwn(ledger, [assetTag])) {
return { ledger: ledger, message: `assetTag ${assetTag} not found` };
}
const newL = JSON.parse(JSON.stringify(ledger));
newL[assetTag].borrower.name = "";
newL[assetTag].borrower.email = "";
newL[assetTag].dueDate = "";
newL[assetTag].status = "CheckedIn";
return { ledger: newL, message: `assetTag ${assetTag} checked in` };
}
const dateFromString = str => {
const e = str.split("/");
return Number(e[2] + e[0].padStart(2, "0") + e[1].padStart(2, "0"));
}
const listOverdueDevices = (ledger, today) => {
const retArr = [];
const todayDate = dateFromString(today);
const ledger2 = {};
for (const dev in ledger) {
if (ledger[dev].status === "CheckedOut" && dateFromString(ledger[dev].dueDate) < todayDate) {
ledger2[dev] = ledger[dev];
}
}
const arr = Object.entries(ledger2);
arr.sort((a, b) => dateFromString(a[1].dueDate) - dateFromString(b[1].dueDate));
for (const dev in arr) {
retArr.push({[arr[dev][0]]: arr[dev][1]});
}
return retArr;
}
const serializeLedger = (ledger) => JSON.stringify(ledger)
const loadLedger= (json) => JSON.parse(json)
console.log(listOverdueDevices(equipmentLedger, '11/28/2026'));
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:156.0) Gecko/20100101 Firefox/156.0
Challenge Information:
Build a Device Loan Ledger - Build a Device Loan Ledger