如何更改具有相同值的对象的键的值而不发生突变,同时在javascript中保持对未更改键的引用相同?

如何更改具有相同值的对象的键的值而不发生突变,同时在javascript中保持对未更改键的引用相同?,javascript,redux,Javascript,Redux,我有一个这样的物体: const obj1={key1:value1,key2:value2,key3:value1} 我想将所有具有值value1的键的值更改为value3: //obj2 {key1:value3,key2:value2,key3:value3} 基本上,我的值是另一个对象。 我不想创建未更改值的新实例。 而且,我不想改变原始对象obj1 编辑 我的理由是保持引用不变可以防止不必要的重新渲染。 我不知道如何给出这个例子,我所能说的是,如果必须更改键的值,请返回新值,否

我有一个这样的物体:

const obj1={key1:value1,key2:value2,key3:value1}
我想将所有具有值
value1
的键的值更改为
value3

//obj2
{key1:value3,key2:value2,key3:value3}
基本上,我的值是另一个对象。 我不想创建未更改值的新实例。 而且,我不想改变原始对象
obj1


编辑 我的理由是保持引用不变可以防止不必要的重新渲染。


我不知道如何给出这个例子,我所能说的是,如果必须更改键的值,请返回新值,否则返回旧值,不要分配旧值。

您可以获取条目,查找所需值并替换此值。然后构建一个新对象

const
source={key1:1,key2:2,key3:1},
搜索=1,
替换=3,
target=Object.fromEntries(对象
.条目(来源)
.map(([k,v])=>[k,v==搜索?替换:v])
);

控制台日志(目标)
你可以使用
让obj2=Object.assign({},obj1)
来制作一个克隆,如果对象是请添加你尝试过的代码。你能提供
value1
value3
的示例吗?我已经更新了这个问题