Javascript 在ES6/ES7中忽略一个或多个属性的浅复制对象?

Javascript 在ES6/ES7中忽略一个或多个属性的浅复制对象?,javascript,ecmascript-6,babeljs,ecmascript-harmony,ecmascript-2016,Javascript,Ecmascript 6,Babeljs,Ecmascript Harmony,Ecmascript 2016,我就是这样做的: var-props={id:1,名称:'test',子项:[]} //复制道具,但不包括儿童 var newProps={…props} 删除newProps.children console.log(newProps)/{id:1,名称:'test'} var-props={id:1,名称:'test',子项:[]} 功能克隆(原始、黑名单操作){ var newProps={}; Object.keys(道具).forEach(函数(键){ 如果(!BlackListDP

我就是这样做的:

var-props={id:1,名称:'test',子项:[]}
//复制道具,但不包括儿童
var newProps={…props}
删除newProps.children
console.log(newProps)/{id:1,名称:'test'}
var-props={id:1,名称:'test',子项:[]}
功能克隆(原始、黑名单操作){
var newProps={};
Object.keys(道具).forEach(函数(键){
如果(!BlackListDProps | | BlackListDProps.indexOf(键)=-1){
新道具[钥匙]=道具[钥匙];
}
});
返回新道具;
}
var newProps=克隆(props,['children']);
console.log(newProps)/{id:1,名称:'test'}
var newProps1=克隆(props);
console.log(newProps1)/{id:1,名称:'test',子项:[]}
您可以使用:


(与您已经使用的相同)

我不明白。你还没有写最重要的一行,你把道具复制到新道具上。什么是“…”@william.taylor.09,不是重复的。他知道如何复制(他只是没有显示那一行),但他想复制所有的属性,除了一个blacklist@Gavriel这一行不是简单地复制了新对象
var newProps={…props}
的属性吗?有点像执行
var newProps=Object.assign({},props)
它给了我一个错误:“Uncaught SyntaxError:Unexpected token”。我不明白,你说:“这就是我一直在做的”,我以为你有一个工作版本,正在寻找一个更好的方式来做。然而,我发布了一个可能的方法below@Bergi,它不是复制品。另一个问题是这个问题的补充:在那里他想根据白名单复制,在这里根据黑名单复制谢谢@gavriel。是的,就这点而言,我想我可以把我的逻辑包装成一个克隆函数。我只是希望有一种更简洁的方式。是的,我认为这是最好的选择——我以前也做过类似的事情。我只是希望有更明确的东西…我认为它已经相当明确了…如果需要,您可以编写一个命名恰当的函数
(key,{[key]:{,……rest})=>rest
,并调用它。
/*eslint没有未使用的变量:[“error”,{“varsIgnorePattern”:“\u”]*/
在使用此技术时有助于消除eslint错误感谢您的回答。这很有帮助。但我同意@EvanHobbs的观点-我希望有一种更直观的方法来实现这一点。
var props = { id: 1, name: 'test', children: [] }

var {children:_, ...newProps} = props;
console.log(newProps) // { id: 1, name: 'test' }
console.log(_) // [] - as an "empty" placeholder