Задать вопрос
@Olaff17

Объясните пожалуйста по этапам логику действия функции?

const ordersArr = [4, 2, 1, 3];
const people = [
{ id: 1, name: "Максим" },
{ id: 2, name: "Николай" },
{ id: 3, name: "Ангелина" },
{ id: 4, name: "Виталий" },
];

function giveTalonsInOrder(patients, orders) {
   const indexPatients = patients.reduce((acc, person) => {
       acc[person.id] = person
       return acc
   }, {})
   return orders.map((orders) => indexPatients[orders])
}

const result = giveTalonsInOrder(people, ordersArr)


Объясните пожалуйста последовательно. Как я понимаю логику
Reduce получается на каждой итерации наполняет новый объект значениями заданного объекта, в итоге мы получаем новый объект с теми же значениями. Затем, как я понимаю метод map меняет параметр id на значения первого объекта. Что заставляет их выстроиться в нужном порядке?? и если я где-то ошибся в рассуждениях поправьте пожалуйста!
  • Вопрос задан
  • 374 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Примерно правильно понимаете.

Сначала создаётся объект-оглавление indexPatients.
Ключи id – значения объекты:
{
  "1": { id: 1, name: "Максим" },
  "2": { id: 2, name: "Николай" },
  // и так далее
}

Из такого объекта-индекса удобно по id вытащить соотв. объект.

Вторым шагом берём массив, где перечислены id в нужном порядке.
И заменяем методом map() каждый id на соотв. ему полный объект.

В итоге получаем массив с объектами в нужном порядке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы