Объекты и сортировкиСтруктурыmedium

Inner Join

Вообще inner join — это оператор SQL (язык для СУБД — систему управления базами данных). И иногда в странных компаниях даже у фронтендеров спрашивают, как он работает.

Ваша задача — реализовать аналогичное поведение на джаваскриптовых массивах.

Функция innerJoin(arrLeft, arrRight, keyLeft, keyRight) принимает 4 аргумента: два массива с объектами, которые нужно объединить, и названия ключей, по которым нужно объединять.

В результате должен образоваться новый массив, в котором объекты будут состоять из ключей объектов первого массива и ключей объектов второго массива. Два объекта obj1 и obj2 объединяются, если значения obj1[keyLeft] и obj2[keyRight] равны.

На примере понятнее. Объединяем массив пользователей и массив купленных курсво по айдишнику пользователя (в первом массиве это ключ id, во втором — userId).

Пользователь alice купил 2 курса, пользователь bob ничего не купил, у пользователя carol — 1 курс. Итого в ответе три объекта.

const users = [ { id: 1, name: "alice", email: "alice@mail.com", }, { id: 2, name: "bob", email: "bob@ya.com", }, { id: 3, name: "carol", email: "carol@ya.com", }, ]; const soldCourses = [ { userId: 1, course: "async-js", date: "11.02.2015", }, { userId: 3, course: "fp-js", date: "22.03.2015", }, { userId: 1, course: "fp-js", date: "26.01.2015", }, ]; console.table(innerJoin( users, soldCourses, "id", "userId", )); const expectedResult = [ { id: 1, name: 'alice', email: 'alice@mail.com', userId: 1, course: 'async-js', date: '11.02.2015', }, { id: 1, name: 'alice', email: 'alice@mail.com', userId: 1, course: 'fp-js', date: '26.01.2015', }, { id: 3, name: 'carol', email: 'carol@ya.com', userId: 3, course: 'fp-js', date: '22.03.2015', }, ];