У меня есть большой объект JS со множеством вложенных объектов. Например:Клонировать часть объекта javascript
var A = {
'b': {
c: [1],
d: {
e: {
f: 'g'
}
}
}
};
Мне нужно создать объект «B» выглядит как объект «А», но массив «Ьс» должен содержать еще один пункт:
var B = {
'b': {
c: [1, 2],
d: {
e: {
f: 'g'
}
}
}
};
Объект «A «не следует изменять.
Я знаю два способа сделать это:
1 Глубокий объект клон JS:
var B = JSON.parse(JSON.stringify(A)); // or with lodash: _.cloneDeep(A)
B.b.c.push(2);
2 Clone только те объекты и массивы, которые мне нужно клонировать:
var B = Object.assign({}, A);
B.b = Object.assign({}, B.b);
B.b.c = B.b.c.slice(0);
B.b.c.push(2);
Я боюсь, что первый способ - ресурсоемкий. Мне не нужно клонировать весь объект. И у второго способа слишком много кода. В моем примере есть небольшой объект, но в моем приложении это могут быть действительно большие объекты.
Как создать объект «B» наиболее оптимального способа?