[英]Delete a property from an object without creating a new one (No delete operateur)
用Lodash omit
例如用這段代碼刪除對象的屬性:
this.current.obj = omit(this.current.obj, ['sellerSupportWeb', 'sellerSupportAgency', 'sellerSupportAgent'])
但這將創建另一個對象this.current.obj
,但在我的情況下,我需要保持相同的對象
你有另一種解決方案嗎? 但不是delete
操作符
你有另一種解決方案嗎? 但不是
delete
操作符
不。 您的選擇是創建一個只包含所需屬性的新對象,或使用delete
運算符從現有對象中刪除屬性(這可能會對屬性查找性能產生重大影響,盡管這實際上是否重要取決於您的頻率'使用該對象的屬性)。
好的,從技術上講,你可以在原始文件周圍包裝一個Proxy
對象,並使用has
, ownKeys
, get
等鈎子來假裝該屬性不存在。 但是你必須通過代理訪問它。
您可以使用lodash的_.unset()
從對象中刪除屬性:
var obj = { a: 1, b: 2, c: 3 }; _.unset(obj, 'a'); console.log(obj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
不,沒有替代解決方案。 我強烈建議使用純函數方法:不要修改變量,而是轉換變量並創建新變量。 如果您需要保留相同的對象(相同的內存分配),那么delete
運算符是您唯一的選擇。
您可以將該屬性設置為undefined,然后當您嘗試訪問該屬性時,結果將與該屬性不存在時的結果相同。
myObject = {
myProp = 'myValue'
}
myObject.myProp = undefined;
console.log(myObject.myProp);
console.log(myObject.inexistentProp);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.