Я хотел бы предоставить один объект и создать из него клонированный объект, но переопределяя его новыми значениями, не затрагивая оригинальный объект. Я хотел использовать immutablejs, чтобы объекты javascript были неизменными.Как слить два объекта с immutablejs?
Вот мой пример:
var map1 = Immutable.fromJS({
selector:'DYNAMIC',
descendants:{
icon:'x',
headingLink:'DYNAMIC',
text:'y',
readMoreLink:'z'
}
});
var map2 = map1.mergeDeep({
selector:'NEW VALUE',
descendants:{
headingLink:'NEW VALUE'
}
}).toObject();
Я ожидаю map2 к выходу:
{
selector:'NEW VALUE',
descendants:{
icon:'x',
headingLink:'NEW VALUE',
text:'y',
readMoreLink:'z'
}
}
Вместо этого я получаю это странное сочетание OwnerId и __altered и т.д.:
{
selector:'NEW VALUE',
descendants:
__altered: false,
__hash:undefined,
__ownerID:undefined,
_root:pt,
size:4
}
}
Любые предложения, которые помогут сделать эту работу, будут высоко оценены. Если immutablejs не может это сделать, то, возможно, это будет альтернативная библиотека.
Спасибо. Это больше о читаемости. Да, я могу просто придерживаться immutablejs, но легче увидеть изменения, которые я хочу внести в структуру данных, как json-карту, как я уже сказал выше в моем примере. Я попробую примеры, которые вы предоставили. –
ОК, поэтому lodash объединяет объекты так, как я хотел, но не замораживает объекты, поэтому они остаются изменчивыми, что не то, что я хочу. –
.toJS работает красиво, но, как вы говорите, это потеря производительности. –