Функция для объединения массивов с использованием предоставленной функции сопоставления
Для начала кодирования откройте Терминал/SSH и введите node
.
Эта функция возвращает массив элементов, которые присутствуют в одном из двух входных массивов, после применения предоставленной функции сопоставления к каждому элементу обоих массивов.
Вот шаги, чтобы достичь этого:
- Создайте новое
Set
, применяя функцию сопоставления ко всем значениям в первом входном массиве a
.
- Создайте еще одно
Set
, состоящее из всех элементов в b
, которые не совпадают с любыми значениями в ранее созданном Set
, когда функция сопоставления применяется.
- Объедините два множества и преобразуйте их в массив.
- Верните полученный массив.
Вот код для функции unionBy
:
const unionBy = (a, b, fn) => {
const setA = new Set(a.map(fn));
return Array.from(new Set([...a, ...b.filter((x) => !setA.has(fn(x)))]));
};
Вот некоторые примеры использования функции unionBy
:
unionBy([2.1], [1.2, 2.3], Math.floor); // Output: [2.1, 1.2]
unionBy([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], (x) => x.id);
// Output: [{ id: 1 }, { id: 2 }, { id: 3 }]