Объединение книг и рецензий (Books and Reviews Merge)

2

GoJavaJavaScriptPython

Словари

Sarex

Условие

Даны два массива:

  • books — список книг;

  • reviews — список рецензий.

У каждой книги есть уникальный id.
У каждой рецензии есть поле bookId, которое указывает, к какой книге относится рецензия.

Нужно вернуть новый массив книг, где к каждой книге добавлено поле reviews.
В это поле нужно положить все рецензии, относящиеся к этой книге.

Если у книги нет рецензий, поле reviews должно быть пустым массивом.

Задача взята из обсуждения на интервью: нужно было объединить массив книг и массив рецензий по bookId.


Входные данные

books — массив объектов:

[
  { id: 1, title: "War and Peace" }
]

reviews — массив объектов:

[
  { id: 101, bookId: 1, text: "Great book" }
]

Выходные данные

Новый массив книг:

[
  {
    id: 1,
    title: "War and Peace",
    reviews: [
      { id: 101, bookId: 1, text: "Great book" }
    ]
  }
]

Ограничения

  • 0 <= books.length <= 10^4

  • 0 <= reviews.length <= 10^4

  • id книги уникален

  • bookId в рецензии может ссылаться на существующую книгу

  • порядок книг в результате должен совпадать с исходным массивом books

  • порядок рецензий внутри каждой книги должен совпадать с исходным массивом reviews


Пример

Вход:

books = [
  { id: 1, title: "War and Peace" },
  { id: 2, title: "1984" }
]

reviews = [
  { id: 101, bookId: 1, text: "Excellent" },
  { id: 102, bookId: 1, text: "Long but good" }
]

Выход:

[
  {
    id: 1,
    title: "War and Peace",
    reviews: [
      { id: 101, bookId: 1, text: "Excellent" },
      { id: 102, bookId: 1, text: "Long but good" }
    ]
  },
  {
    id: 2,
    title: "1984",
    reviews: []
  }
]
Loading...