网友问题:
给定一个对象:
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
"regex": "^http://.*"
};
如何删除属性以最终出现以下内容?regex
myObject
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI"
};
网友回答:
JavaScript 中的对象可以被认为是键和值之间的映射。运算符用于逐个删除这些键(通常称为对象属性)。delete
var obj = {
myProperty: 1
}
console.log(obj.hasOwnProperty('myProperty')) // true
delete obj.myProperty
console.log(obj.hasOwnProperty('myProperty')) // false
运算符不直接释放内存,它与简单地将 or 的值分配给属性的不同之处在于属性本身是从对象中删除的。请注意,如果已删除属性的值是引用类型(对象),并且程序的另一部分仍包含对该对象的引用,则在对该对象的所有引用都消失之前,当然不会对该对象进行垃圾回收。delete
null
undefined
delete
仅适用于其描述符将其标记为可配置的属性。
网友回答:
要从对象中删除属性(改变对象),您可以这样做:
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
如果你想要一个新对象,其中包含原始对象的所有键,除了一些键,你可以使用解构。
演示
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
网友回答:
老问题,现代答案。使用 ECMAScript 6 的一个特性对象解构,它就像:
const { a, ...rest } = { a: 1, b: 2, c: 3 };
或者使用问题示例:
const myObject = {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
const { regex, ...newObject } = myObject;
console.log(newObject);
你可以在 Babel 试用编辑器中看到它的实际效果。
编辑:
要重新分配给同一变量,请使用 :let
let myObject = {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
({ regex, ...myObject } = myObject);
console.log(myObject);
模板简介:该模板名称为【如何删除属性以最终出现以下内容?regexmyObject】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。