Javascript ES6解构:如何创建忽略动态引用键的新对象

Javascript ES6解构:如何创建忽略动态引用键的新对象,javascript,ecmascript-6,javascript-objects,Javascript,Ecmascript 6,Javascript Objects,当密钥引用是动态的时,是否有ES6(及以上)解决方案使用destructuring和spread操作符创建一个新对象,并从原始对象中删除密钥和值,因此: const state = { 12344: { url: 'http://some-url.com', id: '12344' }, 12345: { url: 'http://some-other-url.com', id: '12345' } } const idT

当密钥引用是动态的时,是否有ES6(及以上)解决方案使用destructuring和spread操作符创建一个新对象,并从原始对象中删除密钥和值,因此:

const state = {
   12344: {
      url: 'http://some-url.com',
      id: '12344'
   },
   12345: {
      url: 'http://some-other-url.com',
      id: '12345'
   }
}

const idToDelete = 12344

const { [idToDelete], ...newState } = state // dynamic key

console.log('newState:', newState)

// desired newState would only have the key 12345 and its value
除非是我目前的Babel设置,否则我无法想出干净的ES6方法(如果存在的话)


非常感谢使用dynamic id进行分解时,您需要使用remove值设置一个var:

const state={
12344: {
网址:'http://some-url.com',
id:'12344'
},
12345: {
网址:'http://some-other-url.com',
id:'12345'
}
}
常数idToDelete=12344
//删除的对象将转到unusedVar
常量{[idToDelete]:unusedVar,…newState}=state//动态键

log('newState:',newState)
我认为ES6解构不可能完全实现。由于其他答案包括改变状态,请尝试以下方法:

const state={
12344: {
网址:'http://some-url.com',
id:'12344'
},
12345: {
网址:'http://some-other-url.com',
id:'12345'
}
}
常数idToDelete=12344
const newState=Object.assign({},state);
删除newState[idToDelete];
console.log('newState:',newState)

log('old state:',state)为什么不直接使用地图?在这里似乎更合适。即使你想要实现的目标是可能的,但它是无法理解的。你的第一个代码片段已经回答了我的问题。@user2190690我给出了第二个代码片段,因为关键字
delete
与你想要的很接近