簡體   English   中英

如何將 Javascript 中 object 的所有鍵設置為 newValue 而不會發生變異(Redux)?

[英]How to set all keys of object in Javascript to newValue without mutating (Redux)?

JavaScript 表格中的問題

我有一個像這樣的 object:

const obj1 = {key1: value1, key2: value2, key3: value3, ...}

要更改key1的值(可以是任何鍵),這是我的方式:

const obj2 = {...obj1, key1: newValue}

我想將所有鍵設置為一些newValue ,如何在沒有突變的情況下做到這一點?
想要 Output:

{key1: newValue, key2: newValue, key3: newValue, ...}

Redux 表格中的問題

我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM