繁体   English   中英

JavaScript / ES2015-保留对象的所有属性,除一个白色的Rest / Spread运算符外

[英]JavaScript/ES2015 - Keep all the properties of an object except one whit Rest/Spread operators

我有这个对象:

const value = {
  "template": "<span translate>myRecommendations</span>",
  "badge": "<span>{{ notifications }}</span>",
  "sref": "recommendation.list"
}

我想使用Rest / Spread运算符来创建另一个具有相同名称( value )的对象,并具有除badge属性之外的所有属性

因此,如果要在当前变量中保留另一个形状,只需从对象中删除该属性。

 const value = { "template": "<span translate>myRecommendations</span>", "badge": "<span>{{ notifications }}</span>", "sref": "recommendation.list" }; delete value.badge; console.log(value); 

如果您需要另一个对象,则可以使用对象销毁

 const value = { "template": "<span translate>myRecommendations</span>", "badge": "<span>{{ notifications }}</span>", "sref": "recommendation.list" }; const { badge, ...anotherValue } = value; console.log(anotherValue); 

或遍历对象键并获取所需的属性

 const value = { "template": "<span translate>myRecommendations</span>", "badge": "<span>{{ notifications }}</span>", "sref": "recommendation.list" }; const anotherValue = Object.keys(value).reduce((obj, key) => { if(key !== 'badge') { obj[key] = value[key] ; } return obj; }, {}); console.log(anotherValue); 

您不能有两个名称相同的变量。 但是,如果您不想变异原始对象而仍然使用spread syntax ,则可以考虑以不同的方式命名新对象,例如value2

 const value = { "template": "<span translate>myRecommendations</span>", "badge": "<span>{{ notifications }}</span>", "sref": "recommendation.list" }; const { badge, ...value2 } = value; // ^^^^^^ prop you want NOT to include in your new object console.log(value2); 

干得好:

 const value = { "template": "<span translate>myRecommendations</span>", "badge": "<span>{{ notifications }}</span>", "sref": "recommendation.list" } const { badge, ...updatedValue } = value; console.log(updatedValue) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM