如何从 JavaScript 对象中删除属性?

新手上路,请多包涵

给定一个对象:

let myObject = {
  "ircEvent": "PRIVMSG",
  "method": "newURI",
  "regex": "^http://.*"
};

如何删除属性 regex 以得到以下 myObject

let myObject = {
  "ircEvent": "PRIVMSG",
  "method": "newURI"
};

原文由 johnstok 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 806
2 个回答

要从对象中删除属性(改变对象),您可以这样做:

 delete myObject.regex;
 // or,
 delete myObject['regex'];
 // or,
 var prop = "regex";
 delete myObject[prop];

演示

 var myObject = {
 "ircEvent": "PRIVMSG",
 "method": "newURI",
 "regex": "^http://.*"
 };
 delete myObject.regex;

 console.log(myObject);

对于任何有兴趣阅读更多相关信息的人,Stack Overflow 用户 kangax 在他们的博客上写了一篇关于 delete 语句的非常深入的博文, _了解删除_。强烈推荐。

如果您想要一个 对象,其中包含除一些之外的所有原始键,您可以使用 destructuring

演示

 let myObject = {
 "ircEvent": "PRIVMSG",
 "method": "newURI",
 "regex": "^http://.*"
 };

 // assign the key regex to the variable _ indicating it will be unused
 const {regex: _, ...newObj} = myObject;

 console.log(newObj); // has no 'regex' key
 console.log(myObject); // remains unchanged

原文由 nickf 发布,翻译遵循 CC BY-SA 4.0 许可协议

JavaScript 中的对象可以被认为是键和值之间的映射。 delete 运算符用于删除这些键,通常称为对象属性,一次一个。

 var obj = {
  myProperty: 1
}
console.log(obj.hasOwnProperty('myProperty')) // true
delete obj.myProperty
console.log(obj.hasOwnProperty('myProperty')) // false

delete 运算符不直接释放内存,它不同于简单地分配 nullundefined 的值--- 属性 本身 被删除从对象。请注意,如果已删除属性的 是一个引用类型(一个对象),并且程序的另一部分仍然持有对该对象的引用,那么该对象当然不会被垃圾回收,直到对它的所有引用都被删除消失了。

delete 仅适用于其描述符将其标记为可配置的属性。

原文由 Dan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题