[英]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.