簡體   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