编程语言
首页 > 编程语言> > javascript-通过解构从对象中删除键的不变性

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