Javascript ES6解构:如何创建忽略动态引用键的新对象
当密钥引用是动态的时,是否有ES6(及以上)解决方案使用destructuring和spread操作符创建一个新对象,并从原始对象中删除密钥和值,因此: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
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
与你想要的很接近