JavaScript实现getBooksPossessedByAccount函数:返回账户未还书籍及关联作者
原实现代码问题说明
- 对
borrows的数据结构理解错误:borrows是数组,原代码直接通过books[idxBks].borrows.id取属性,相当于把数组当成单对象访问,根本无法匹配到对应账户的借阅记录 - 匹配逻辑顺序错误:未校验书籍是否符合用户未归还的借阅条件,就进入作者匹配逻辑,且错误读取数组
result的authorId属性,无法拿到单本书的作者标识 - 流程控制错误:在作者匹配的循环里直接
return,找到第一个匹配的作者就会终止整个函数运行,根本收集不全符合条件的书籍 - 结果结构错误:不符合要求的输出格式,没有把作者对象内嵌到单本图书对象中,反而返回了数组和额外对象拼接的结构
修正后的可运行代码
function getBooksPossessedByAccount(account, books, authors) { const accountId = account.id; const result = []; // 遍历所有书籍,筛选用户当前持有(借出未归还)的图书 for (const book of books) { // 检查图书的借阅记录中,是否存在当前账户未归还的条目 const hasUnreturnedBorrow = book.borrows.some(item => { return item.id === accountId && item.returned === false; }); if (!hasUnreturnedBorrow) continue; // 匹配当前图书对应的作者信息 const matchedAuthor = authors.find(author => author.id === book.authorId); // 构造带作者内嵌属性的图书对象 const processedBook = { ...book, author: matchedAuthor }; result.push(processedBook); } return result; }
内容的提问来源于stack exchange,提问作者Jesse Sexton
相关产品推荐
相关产品推荐

