Как рекурсивно объединенить объекты JavaScript? Нужно объединить два и более объекта вместе со свойствами и методами, причем именно рекурсивно, чтобы все вложенные объекты так же перешли в результат. Есть ли встроенные методы? Может быть в ES6 что-то появилось? Или какой-то библиотекой можно воспользоваться?
В JavaScript нет стандартного встроенного метода для рекурсивного объединения объектов. Однако, можно воспользоваться библиотекой, такой как Lodash, которая предоставляет метод merge для объединения объектов.
В JavaScript нет стандартного встроенного метода для рекурсивного объединения объектов. Однако, можно воспользоваться библиотекой, такой как Lodash, которая предоставляет метод merge для объединения объектов.
Пример использования метода merge из Lodash:
const _ = require('lodash');const obj1 = {
a: 1,
b: {
c: 2
}
};
const obj2 = {
b: {
d: 3
}
};
const mergedObj = _.merge(obj1, obj2);
console.log(mergedObj);
Если вы используете ES6, можно реализовать функцию для рекурсивного объединения объектов самостоятельно. Вот пример такой функции:
function mergeObjects(...objects) {const isObject = obj => obj && typeof obj === 'object';
return objects.reduce((acc, obj) => {
Object.keys(obj).forEach(key => {
if (isObject(obj[key])) {
acc[key] = mergeObjects(acc[key] || {}, obj[key]);
} else {
acc[key] = obj[key];
}
});
return acc;
}, {});
}
const obj1 = {
a: 1,
b: {
c: 2
}
};
const obj2 = {
b: {
d: 3
}
};
const mergedObj = mergeObjects(obj1, obj2);
console.log(mergedObj);
Обе реализации позволят вам рекурсивно объединить объекты JavaScript.