Введение
В этом практическом занятии мы изучим концепцию глубокого слияния двух объектов в JavaScript. Создадим функцию, которая сможет принимать два объекта и сливать их таким образом, чтобы мы могли обрабатывать ключи, присутствующие в обоих объектах, с использованием пользовательской функции. В конце этого практического занятия вы сможете сливать сложные объекты и комбинировать их значения с использованием пользовательской функции.
Как глубоко объединить объекты в JavaScript
Чтобы глубоко объединить два объекта в JavaScript, можно использовать функцию deepMerge. Эта функция принимает два объекта и функцию в качестве аргументов. Функция используется для обработки ключей, присутствующих в обоих объектах.
Вот, как работает функция deepMerge:
- Используйте
Object.keys()для получения ключей обоих объектов, создайте из нихSetи используйте оператор расширения (...), чтобы создать массив всех уникальных ключей. - Используйте
Array.prototype.reduce(), чтобы добавить каждый уникальный ключ в объект, используяfnдля объединения значений двух заданных объектов.
Вот код для функции deepMerge:
const deepMerge = (a, b, fn) =>
[...new Set([...Object.keys(a), ...Object.keys(b)])].reduce(
(acc, key) => ({ ...acc, [key]: fn(key, a[key], b[key]) }),
{}
);
Для использования функции deepMerge вызовите ее с двумя объектами и функцией. Вот пример:
deepMerge(
{ a: true, b: { c: [1, 2, 3] } },
{ a: false, b: { d: [1, 2, 3] } },
(key, a, b) => (key === "a" ? a && b : Object.assign({}, a, b))
);
// { a: false, b: { c: [ 1, 2, 3 ], d: [ 1, 2, 3 ] } }
В этом примере функция deepMerge используется для объединения двух объектов. Результирующий объект имеет значения обоих объектов, объединенных вместе.
Резюме
Поздравляем! Вы завершили практическое занятие по глубокому объединению объектов. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.