返回书籍数组的辅助函数

时间:2021-07-26 13:59:16

标签: javascript function

我已经解决了我的函数,使其完美运行,现在唯一的问题是,无论出于何种原因,他们想要在其中实现辅助函数,我什至不知道从哪里开始,因为我并没有真正工作太多使用辅助函数,我将包含数据和代码,你们的任何建议都会有所帮助。谢谢!

这是给我的提示:

getBorrowersForBook() 中的 public/src/books.js 函数有两个参数,顺序如下:

  • 一个书对象。
  • 所有帐户的数组。

它应该从书的 borrows 键返回所有交易的数组。但是,每笔交易都应包含相关的帐户信息和 returned 键。

我已经解决了代码没有在这里使用辅助函数:

function getBorrowersForBook(book, accounts) {
     let result = [];
     let borrowArray = book.borrows;
     borrowArray.forEach(borrow=>{
       let account = accounts.find(acc => acc.id === borrow.id);
       let obj = account;
       obj['returned'] =  borrow.returned;
       result.push(obj);
})
console.log(result);
return result.slice(0,10);
}

这是此函数中使用的数据的部分

const books = [
{
id: "5f447132d487bd81da01e25e",
title: "sit eiusmod occaecat eu magna",
genre: "Science",
authorId: 8,
borrows: [
  {
    id: "5f446f2e2cfa3e1d234679b9",
    returned: false,
  },
  {
    id: "5f446f2ed3609b719568a415",
    returned: true,
  },
  {
    id: "5f446f2e1c71888e2233621e",
    returned: true,
  },
  {
    id: "5f446f2e6059326d9feb9a68",
    returned: true,
  },
  {
    id: "5f446f2ede05a0b1e3394d8b",
    returned: true,
  },
  {
    id: "5f446f2e4081699cdc6a2735",
    returned: true,
  },
  {
    id: "5f446f2e3900dfec59489477",
    returned: true,
  },
  {
    id: "5f446f2e6059326d9feb9a68",
    returned: true,
  },
  {
    id: "5f446f2e409f8883af2955dd",
    returned: true,
  },
  {
    id: "5f446f2e3900dfec59489477",
    returned: true,
  },
  {
    id: "5f446f2eae901a82e0259947",
    returned: true,
  },
  {
    id: "5f446f2ef2ab5f5a9f60c4f2",
    returned: true,
  },
  {
    id: "5f446f2ea6b68cf6f85f6e28",
    returned: true,
  },
  {
    id: "5f446f2eed18105706d6ca19",
    returned: true,
  },
  {
    id: "5f446f2eae901a82e0259947",
    returned: true,
  },
  {
    id: "5f446f2e91c2af00cb74e82b",
    returned: true,
  },
  {
    id: "5f446f2e5aa2bb5545a0f8a6",
    returned: true,
  },
  {
    id: "5f446f2ea508b6a99c3e42c6",
    returned: true,
  },
  {
    id: "5f446f2e50cc2da9cd80efdb",
    returned: true,
  },
  {
    id: "5f446f2e0b3e2ff72fc503e7",
    returned: true,
  },
  {
    id: "5f446f2e91c2af00cb74e82b",
    returned: true,
  },
  {
    id: "5f446f2ef795e593cd3cd19d",
    returned: true,
  },
  {
    id: "5f446f2e2f35653fa80bf490",
    returned: true,
  },
  {
    id: "5f446f2e7b9cd304fed3a8bc",
    returned: true,
  },
  {
    id: "5f446f2ed9aac23c0340aab2",
    returned: true,
  },
],
},
{
id: "5f4471329627160be1e8ce92",
title: "esse ea veniam non occaecat",
genre: "Classics",
authorId: 10,
borrows: [
  {
    id: "5f446f2ed3609b719568a415",
    returned: false,
  },
  {
    id: "5f446f2ec32d71dabec35b06",
    returned: true,
  },
  {
    id: "5f446f2ef2ab5f5a9f60c4f2",
    returned: true,
  },
  {
    id: "5f446f2e7a1be21e362b82f9",
    returned: true,
  },
  {
    id: "5f446f2e6059326d9feb9a68",
    returned: true,
  },
  {
    id: "5f446f2ec32d71dabec35b06",
    returned: true,
  },
  {
    id: "5f446f2e59f9380a1d03d766",
    returned: true,
  },
  {
    id: "5f446f2e141b97d842b680fd",
    returned: true,
  },
  {
    id: "5f446f2e409f8883af2955dd",
    returned: true,
  },
  {
    id: "5f446f2ee176f80b8d5d24da",
    returned: true,
  },
  {
    id: "5f446f2ef795e593cd3cd19d",
    returned: true,
  },
  {
    id: "5f446f2eef419207c5fa4ec9",
    returned: true,
  },
  {
    id: "5f446f2e50cc2da9cd80efdb",
    returned: true,
  },
  {
    id: "5f446f2e4081699cdc6a2735",
    returned: true,
  },
],
},
{
id: "5f44713265e5d8d17789beb0",
title: "tempor occaecat fugiat",
genre: "Travel",
authorId: 16,
borrows: [
  {
    id: "5f446f2e4eff1030e7316861",
    returned: true,
  },
  {
    id: "5f446f2ecc5c4787c403f844",
    returned: true,
  },
  {
    id: "5f446f2ee1661e64cde14e55",
    returned: true,
  },
  {
    id: "5f446f2e50cc2da9cd80efdb",
    returned: true,
  },
  {
    id: "5f446f2ef795e593cd3cd19d",
    returned: true,
  },
  {
    id: "5f446f2eae901a82e0259947",
    returned: true,
  },
  {
    id: "5f446f2e3e70bb4e1ab821c9",
    returned: true,
  },
  {
    id: "5f446f2ef2ab5f5a9f60c4f2",
    returned: true,
  },
  {
    id: "5f446f2e136866e4fe60c893",
    returned: true,
  },
],
},
{
id: "5f44713264bb872240dd62d0",
title: "proident cupidatat fugiat aliquip do",
genre: "Young Adult",
authorId: 20,
borrows: [
  {
    id: "5f446f2efa7fe184c4014dd2",
    returned: false,
  },
  {
    id: "5f446f2e59f9380a1d03d766",
    returned: true,
  },
  {
    id: "5f446f2ede05a0b1e3394d8b",
    returned: true,
  },
  {
    id: "5f446f2ed9aac23c0340aab2",
    returned: true,
  },
  {
    id: "5f446f2e136866e4fe60c893",
    returned: true,
  },
  {
    id: "5f446f2eef419207c5fa4ec9",
    returned: true,
  },
  {
    id: "5f446f2e409f8883af2955dd",
    returned: true,
  },
  {
    id: "5f446f2e59f9380a1d03d766",
    returned: true,
  },
  {
    id: "5f446f2e7d3e00a5efe35b6e",
    returned: true,
  },
  {
    id: "5f446f2ec32d71dabec35b06",
    returned: true,
  },
  {
    id: "5f446f2e3e70bb4e1ab821c9",
    returned: true,
  },
  {
    id: "5f446f2e5abedb2ba5eecd16",
    returned: true,
  },
  {
    id: "5f446f2e7eb4accbc92cb7a8",
    returned: true,
  },
  {
    id: "5f446f2ef7fc711c78b57e51",
    returned: true,
  },
  {
    id: "5f446f2e5a23764338868b10",
    returned: true,
  },
  {
    id: "5f446f2ea0502bf8cbc7676a",
    returned: true,
  },
  {
    id: "5f446f2eaf32d8ddf09e8f83",
    returned: true,
  },
  {
    id: "5f446f2eef419207c5fa4ec9",
    returned: true,
  },
  {
    id: "5f446f2e91a138c3a8ac6980",
    returned: true,
  },
  {
    id: "5f446f2e5e2952040e9f9b88",
    returned: true,
  },
  {
    id: "5f446f2e141b97d842b680fd",
    returned: true,
  },
  {
    id: "5f446f2ee734f727dfceefbd",
    returned: true,
  },
  {
    id: "5f446f2efa2e5110917e5929",
    returned: true,
  },
  {
    id: "5f446f2e5e2952040e9f9b88",
    returned: true,
  },
  {
    id: "5f446f2e4081699cdc6a2735",
    returned: true,
  },
  {
    id: "5f446f2e7b9cd304fed3a8bc",
    returned: true,
  },
],
},
{
id: "5f447132a476ece080afa067",
title: "ullamco est minim",
genre: "Nonfiction",
authorId: 25,
borrows: [
  {
    id: "5f446f2e189628dfd4e6225e",
    returned: false,
  },
  {
    id: "5f446f2ec56b2fa77d5545ef",
    returned: true,
  },
  {
    id: "5f446f2e2f35653fa80bf490",
    returned: true,
  },
  {
    id: "5f446f2ee1661e64cde14e55",
    returned: true,
  },
  {
    id: "5f446f2ee5be00208a4481e0",
    returned: true,
  },
  {
    id: "5f446f2ecc5c4787c403f844",
    returned: true,
  },
  {
    id: "5f446f2e91c2af00cb74e82b",
    returned: true,
  },
  {
    id: "5f446f2e2f35653fa80bf490",
    returned: true,
  },
  {
    id: "5f446f2ed92454081fb1999b",
    returned: true,
  },
  {
    id: "5f446f2e136866e4fe60c893",
    returned: true,
  },
  {
    id: "5f446f2e7d3e00a5efe35b6e",
    returned: true,
  },
  {
    id: "5f446f2e93963fcd4e5adf00",
    returned: true,
  },
  {
    id: "5f446f2e4081699cdc6a2735",
    returned: true,
  },
  {
    id: "5f446f2ecc5c4787c403f844",
    returned: true,
  },
  {
    id: "5f446f2e136866e4fe60c893",
    returned: true,
  },
  {
    id: "5f446f2ef055e8f3064b763e",
    returned: true,
  },
  {
    id: "5f446f2e7d3e00a5efe35b6e",
    returned: true,
  },
  {
    id: "5f446f2e5e2952040e9f9b88",
    returned: true,
  },
  {
    id: "5f446f2ed9aac23c0340aab2",
    returned: true,
  },
  {
    id: "5f446f2efa2e5110917e5929",
    returned: true,
  },
  {
    id: "5f446f2e3e70bb4e1ab821c9",
    returned: true,
  },
  {
    id: "5f446f2e6dd33178245e5771",
    returned: true,
  },
  {
    id: "5f446f2ec56b2fa77d5545ef",
    returned: true,
  },
  {
    id: "5f446f2eef419207c5fa4ec9",
    returned: true,
  },
  {
    id: "5f446f2ef055e8f3064b763e",
    returned: true,
  },
  {
    id: "5f446f2e1c71888e2233621e",
    returned: true,
  },
  {
    id: "5f446f2eeb9463f976413b65",
    returned: true,
  },
  {
    id: "5f446f2e138a3841f7aeccf2",
    returned: true,
  },
  {
    id: "5f446f2e4081699cdc6a2735",
    returned: true,
  },
],
}

我忘了包含额外的数据,它还会从“帐户”数组中提取数据:

const accounts = [
{
id: "5f446f2ecfaf0310387c9603",
picture: "https://api.adorable.io/avatars/75/esther.tucker@zillacon.me",
age: 25,
name: {
  first: "Esther",
  last: "Tucker",
},
company: "ZILLACON",
email: "esther.tucker@zillacon.me",
registered: "Thursday, May 28, 2015 2:51 PM",
},
{
id: "5f446f2ed46724f41c9fc431",
picture: "https://api.adorable.io/avatars/75/ferrell.morris@ecolight.com",
age: 35,
name: {
  first: "Ferrell",
  last: "Morris",
},
company: "ECOLIGHT",
email: "ferrell.morris@ecolight.com",
registered: "Thursday, February 8, 2018 1:16 PM",
},
{
id: "5f446f2e5e2952040e9f9b88",
picture: "https://api.adorable.io/avatars/75/robertson.simmons@goko.tv",
age: 38,
name: {
  first: "Robertson",
  last: "Simmons",
},
company: "GOKO",
email: "robertson.simmons@goko.tv",
registered: "Monday, October 30, 2017 10:28 PM",
},
{
id: "5f446f2e637138095dcc3db2",
picture: "https://api.adorable.io/avatars/75/allen.bartlett@poshome.co.uk",
age: 30,
name: {
  first: "Allen",
  last: "Bartlett",
},
company: "POSHOME",
email: "allen.bartlett@poshome.co.uk",
registered: "Saturday, June 6, 2015 1:07 PM",
},
{
id: "5f446f2e3900dfec59489477",
picture: "https://api.adorable.io/avatars/75/langley.henson@zoxy.org",
age: 31,
name: {
  first: "Langley",
  last: "Henson",
},
company: "ZOXY",
email: "langley.henson@zoxy.org",
registered: "Friday, September 9, 2016 3:48 AM",
},
{
id: "5f446f2eef419207c5fa4ec9",
picture: "https://api.adorable.io/avatars/75/patrick.todd@comtent.biz",
age: 29,
name: {
  first: "Patrick",
  last: "Todd",
},
company: "COMTENT",
email: "patrick.todd@comtent.biz",
registered: "Monday, February 19, 2018 7:35 AM",
},
{
id: "5f446f2ede05a0b1e3394d8b",
picture:
  "https://api.adorable.io/avatars/100/dorothy.fernandez@medicroix.biz",
age: 35,
name: {
  first: "Dorothy",
  last: "Fernandez",
},
company: "MEDICROIX",
email: "dorothy.fernandez@medicroix.biz",
registered: "Thursday, July 12, 2018 12:40 PM",
},
{
id: "5f446f2efa7fe184c4014dd2",
picture:
  "https://api.adorable.io/avatars/100/sheena.castaneda@geeknet.name",
age: 37,
name: {
  first: "Sheena",
  last: "Castaneda",
},
company: "GEEKNET",
email: "sheena.castaneda@geeknet.name",
registered: "Monday, January 11, 2016 2:49 AM",
}

如果有人需要参考,这里是测试代码:

describe("getBorrowersForBook()", () => {
it("should return an array for a book of all borrowers with their information and return status", () => {
  const book = booksFixture[3];
  const [first, second] = getBorrowersForBook(book, accounts);

  expect(first.name).to.eql({ first: "Barber", last: "Waters" });
  expect(first.email).to.eql("barber.waters@kegular.biz");
  expect(first.returned).to.be.true;

  expect(second.name).to.eql({ first: "Dyer", last: "Trevino" });
  expect(second.email).to.eql("dyer.trevino@slax.io");
  expect(second.returned).to.be.true;
});

it("should limit the list to ten borrowers", () => {
  const book = booksFixture[1];
  const actual = getBorrowersForBook(book, accounts);
  expect(actual.length).to.equal(10);
});
});

再次不知道为什么他们想要在这方面有一个辅助功能,因为我已经解决了它,但任何反馈都将不胜感激。

0 个答案:

没有答案
相关问题