考虑到一个对象:
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"
};
当前回答
JavaScript 中的对象可以被认为是关键与值之间的地图. 删除操作员用于删除这些关键,更常见地称为对象属性,一次。
var obj = { myProperty: 1 } console.log(obj.hasOwnProperty('myProperty')) // true delete obj.myProperty console.log(obj.hasOwnProperty('myProperty')) // false
删除操作员不直接释放记忆,而它不同于简单地将零或未定义的值分配给一个属性,其中属性本身是从对象中删除的。 请注意,如果删除的属性的值是参考类型(对象),而您的程序的另一个部分仍然保留对该对象的参考,那么该对象当然不会是垃圾收集。
删除只会对其描述者标记为可配置的属性进行操作。
其他回答
使用对象破坏,一个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 try-out编辑中看到它。
编辑:
要重新分配到相同的变量,请使用:
let myObject = {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
({ regex, ...myObject } = myObject);
console.log(myObject);
要从对象中删除一个属性(指向对象),你可以这样做:
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 写了一篇关于他们博客的删除声明的令人难以置信的深入博客帖子,理解删除。
如果你想要一个新的对象,除了一些,所有原始的钥匙,你可以使用破坏。
下面是ES6如何轻松地删除输入:
让 myObject = { “ircEvent”: “PRIVMSG”, “method”: “newURI”, “regex”: “^http://.*” }; const removeItem = “regex”; const { [removeItem]: remove,...rest } = myObject; console.log(remove); // “^http://.*” console.log(rest); // Object { ircEvent: “PRIVMSG”, 方法: “newURI” }
假设你有一个类似于此的对象:
var Hogwarts = {
staff : [
'Argus Filch',
'Filius Flitwick',
'Gilderoy Lockhart',
'Minerva McGonagall',
'Poppy Pomfrey',
...
],
students : [
'Hannah Abbott',
'Katie Bell',
'Susan Bones',
'Terry Boot',
'Lavender Brown',
...
]
};
删除物品财产
delete Hogwarts.staff;
delete Hogwarts['staff'];
删除 array index
现在,如果你想移除一个员工或学生,程序有点不同,因为两种属性都是由自己组成的。
Hogwarts.staff.splice(3, 1);
Hogwarts.staff.splice(Hogwarts.staff.indexOf('Minerva McGonnagall') - 1, 1);
笔记
虽然你技术上可以使用删除一个序列,使用它会导致收到错误的结果,当打电话,例如,Hogwarts.staff.length 后来。
因此,在从对象中删除值时,首先要考虑您是否正在处理对象属性,或者您是否正在处理序列值,并根据此选择适当的策略。
如果你想尝试这个,你可以使用这个Fiddle作为一个起点。
我个人使用 Underscore.js 或 Lodash 用于对象和序列操作:
myObject = _.omit(myObject, 'regex');