![](/img/trans.png)
[英]Multiple nested spread operators inside of an array (javascript es2015)
[英]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.