[英]How to set all keys of object in Javascript to newValue without mutating (Redux)?
我有一个像这样的 object:
const obj1 = {key1: value1, key2: value2, key3: value3, ...}
要更改key1
的值(可以是任何键),这是我的方式:
const obj2 = {...obj1, key1: newValue}
我想将所有键设置为一些newValue
,如何在没有突变的情况下做到这一点?
想要 Output:
{key1: newValue, key2: newValue, key3: newValue, ...}
我的state
是这样的:
{
key1: value1,
key2: value2,
key3: value3,
// ...
}
要更改一个值,我在reducer
中这样做:
return {
...state,
[action.key]: action.value
}
但是,如果我通过我的action.value
赋予一些价值,如何改变所有键的价值? 我希望我的下一个 state 像这样:
{
key1: newValue,
key2: newValue,
key3: newValue,
// ...
}
您需要遍历键,并使用说reduce
创建一个新的 object
const obj = { key1: 1, key2: 2, key3: 3 } const value = 0; const updated = Object.keys(obj).reduce((acc, key) => (acc[key] = value, acc), {}) console.log(obj, updated)
只是为了好玩一些代理魔法(不要用于生产)
const obj = { key1: 1, key2: 2, key3: 3 } const value = 0 const updated = {...new Proxy(obj, { keys() { return Object.keys(obj) }, get() { return value } }) } console.log(obj, updated)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.