javascript - 从嵌套对象中删除数据而不改变

标签 javascript immutability redux mutation

是否有任何优雅的方法可以从属于数组的数组中删除对象? 我已经使用 React 和 Redux 有一段时间了,但每次我必须在不改变状态的情况下删除或插入数据时都会卡住几个小时。

reducer 是一个数组,其中包含具有 ID 的对象和另一个包含对象的数组,如下所示:

[
 { id:123,
   items:[
           { id: abc,
             name: albert
           }, 
           ... 
         ]
 }, 
 ... 
]

我收到了两个 ID,需要删除 ID 为 abc 的项目。

最佳答案

通过 id 从数组中删除一个项目:

return state.filter(item => item.id !== action.id)

通过 id 从对象中删除键:

let copy = Object.assign({}, state) // assuming you use Object.assign() polyfill!
delete copy[action.id] // shallowly mutating a shallow copy is fine
return copy

(奖励)与 object spread operator proposal 相同:

let { [action.id]: deletedItem, ...rest } = state
return rest

关于javascript - 从嵌套对象中删除数据而不改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35342355/

相关文章:

javascript - 如何创建具有不可变属性的 javascript 类

flux - 谁应该拥有元素的国家值(value)?

javascript - 如何在 VueJS 中处理插槽的 onClick 事件

javascript - 获取 data-* 属性的值并设置它们的列表

java - 为什么在创建不可变类时,将字段声明为私有(private)?

reactjs - 函数和setState函数有一些变化吗?

reactjs - 如何将 redux-form 与 Material-ui v1 (material-ui-next) 一起使用?

javascript - 使用 jQuery 使内容动态化

javascript - "resolve"是否始终意味着与 "fulfill"不同的东西?

scala - Scala到底有多纯洁和懒惰?