考虑到一个对象:
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
"regex": "^http://.*"
};
如何删除财产 regex 以完成下一个 myObject?
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI"
};
考虑到一个对象:
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
"regex": "^http://.*"
};
如何删除财产 regex 以完成下一个 myObject?
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI"
};
当前回答
要从对象中删除一个属性(指向对象),你可以这样做:
delete myObject.regex;
// or,
delete myObject['regex'];
// or,
var prop = "regex";
delete myObject[prop];
Demo var myObject = { “ircEvent”: “PRIVMSG”, “method”: “newURI”, “regex”: “^http://.*” }; 删除 myObject.regex; console.log(myObject);
对于任何有兴趣阅读更多关于它的人来说,Stack Overflow 用户 Kangax 写了一篇关于他们博客的删除声明的令人难以置信的深入博客帖子,理解删除。
如果你想要一个新的对象,除了一些,所有原始的钥匙,你可以使用破坏。
其他回答
使用删除方法是最好的方式来做到这一点,根据 MDN 描述,删除操作员从对象中删除一个属性。
delete myObject.regex;
// OR
delete myObject['regex'];
如果您正在尝试删除的财产不存在,删除将没有任何效果,并将返回真实。
因此,删除不能在全球范围内删除任何功能(无论是函数定义或函数(表达)的一部分)。
任何以 let 或 const 声明的属性都不能从它们被定义的范围内删除. 不可配置的属性不能删除. 这包括构建物品的属性,如 Math、Array、Object 和用 Object.defineProperty(等方法创建为不可配置的属性。
下面的剪辑给了另一个简单的例子:
有关更多信息和查看更多例子,请参阅下面的链接:
Object.assign() 和 Object.keys() 和 Array.map()
const obj = { “过滤器”:[ { “过滤器类型”:”之间”, “区域”:”BasicInformationRow.A0”, “MaxValue”:”2017-10-01”, “MinValue”:”2017-09-01”, “值”:”过滤器值” } } }; let new_obj1 = Object.assign({}, obj.Filters[0]); let new_obj2 = Object.assign({}, obj.Filters[0]); /* // old version let sh
如果您想删除对物体深沉的财产,那么您可以使用下列重复功能,路径到财产作为第二个论点:
var deepObjectRemove = function(obj, path_to_key){
if(path_to_key.length === 1){
delete obj[path_to_key[0]];
return true;
}else{
if(obj[path_to_key[0]])
return deepObjectRemove(obj[path_to_key[0]], path_to_key.slice(1));
else
return false;
}
};
例子:
var a = {
level1:{
level2:{
level3: {
level4: "yolo"
}
}
}
};
deepObjectRemove(a, ["level1", "level2", "level3"]);
console.log(a);
//Prints {level1: {level2: {}}}
要从对象中删除一个属性(指向对象),你可以这样做:
delete myObject.regex;
// or,
delete myObject['regex'];
// or,
var prop = "regex";
delete myObject[prop];
Demo var myObject = { “ircEvent”: “PRIVMSG”, “method”: “newURI”, “regex”: “^http://.*” }; 删除 myObject.regex; console.log(myObject);
对于任何有兴趣阅读更多关于它的人来说,Stack Overflow 用户 Kangax 写了一篇关于他们博客的删除声明的令人难以置信的深入博客帖子,理解删除。
如果你想要一个新的对象,除了一些,所有原始的钥匙,你可以使用破坏。
这里有很多好答案,但我只是想说,当使用删除删除在JavaScript中删除一个属性时,很常见首先检查该属性是否存在,以防止错误。
E.G
var obj = {"property":"value", "property2":"value"};
if (obj && obj.hasOwnProperty("property2")) {
delete obj.property2;
} else {
//error handling
}
由于JavaScript的动态性质,经常有情况,你只是不知道是否存在的财产。 检查obj是否存在之前&& 也确保你不会扔错误,因为在未定义的对象上呼叫 hasOwnProperty() 函数。
对不起,如果这并没有添加到您的具体使用案例,但我认为这是一个很好的设计,在管理对象和其属性时适应。