javascript-通过解构从对象中删除键的不变性
作者:互联网
我有一个具有简化结构的对象,如下所示:
state = {
todo: {
1: {text: 'Buy apples'},
2: {text: 'Buy milk'}
}
}
如果我想删除待办事项的不变性,根据Stack Overflow上的其他答案,我可以分解待办事项的列表:
const idToDelete = 2
let {
[idToDelete]: deleted,
...newTodo
} = state.todo
如果我执行console.log(newTodo),则它具有相同的state.todo值,这意味着它尚未删除ID为2的待办事项.如果我console.log(deleted),则它返回的内容我要删除的待办事项:{text:’买牛奶’}.
我知道使用像Immutable.js这样的库来管理它会稍微容易一些,但是我想知道为什么解构对象并不会删除待办事项.谢谢.
解决方法:
您将需要阶段0来实现您想要的.如果检查我的代码,将会看到,如果使用字符串破坏参数,它将按预期运行,但是如果使用数字变量,则结果将是完整对象.我猜这应该是实施中的错误.
const state = {
todo: {
1: {text: 'Buy apples'},
2: {text: 'Buy milk'}
}
}
const id = 1
const { [id]: deleted, ...newTodo } = state.todo
console.log(deleted)
console.log(newTodo)
/********* GOOD EXAMPLE *********/
const { [id.toString()]: del, ...goodNewTodo } = state.todo
console.log(del)
console.log(goodNewTodo)
标签:ecmascript-next,babeljs,immutability,javascript 来源: https://codeday.me/bug/20191026/1934815.html