假设我创建一个对象,如下所示:
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
"regex": "^http://.*",
};我应该如何删除属性regex以获得新的myObject,如下所示?
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
};发布于 2008-10-16 18:58:53
要从对象中删除属性(改变对象),可以执行以下操作:
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://.*"
};
const {regex, ...newObj} = myObject;
console.log(newObj); // has no 'regex' key
console.log(myObject); // remains unchanged
发布于 2014-02-13 01:48:06
JavaScript中的对象可以看作是键和值之间的映射。delete运算符用于一次删除一个键,这些键通常称为对象属性。
var obj = {
myProperty: 1
}
console.log(obj.hasOwnProperty('myProperty')) // true
delete obj.myProperty
console.log(obj.hasOwnProperty('myProperty')) // false
delete运算符不直接释放内存,它不同于简单地将null或undefined的值赋给属性,因为属性本身是从对象中删除的。注意,如果一个已删除属性的值是一个引用类型(一个对象),并且程序的另一部分仍然持有对该对象的引用,那么该对象当然不会被垃圾回收,直到对它的所有引用都消失为止。
delete将仅在其描述符将其标记为可配置的属性上工作。
发布于 2008-10-16 11:03:02
var myObject = {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
delete myObject.regex;
console.log ( myObject.regex); // logs: undefined
这在Firefox和Internet Explorer中都有效,我认为它在所有其他浏览器中也有效。
https://stackoverflow.com/questions/208105
复制相似问题