考虑到一个对象:

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

如何删除财产 regex 以完成下一个 myObject?

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

当前回答

我个人使用 Underscore.js 或 Lodash 用于对象和序列操作:

myObject = _.omit(myObject, 'regex');

其他回答

使用对象破坏,一个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);

@johnstock,我们也可以使用JavaScript的原型化概念,将方法添加到对象中,以删除在呼叫对象中可用的任何过渡密钥。

上面的答案值得欣赏。

var myObject = {“ircEvent”:“PRIVMSG”,“方法”:“newURI”,“regex”:“^http://.*” }; // 1st 和直接方式删除 myObject.regex; // 删除 myObject[“regex”] console.log(myObject); // { ircEvent:‘PRIVMSG’,方法:‘newURI’ } // 2 方式 - 使用 JavaScript 的原型概念 Object.prototype.removeFromObjectByKey = 函数(关键) { // 如果有,删除它并删除它

const object = { prop1: 10, prop2: 20, prop3: 30, “test prop”: “This is test props” } console.log(object); // 将打印所有 4 props 删除 object.prop1; 删除 object[“test prop”]; console.log(object); // 将打印仅 prop2 和 prop3

使用删除方法是最好的方式来做到这一点,根据 MDN 描述,删除操作员从对象中删除一个属性。

delete myObject.regex;
// OR
delete myObject['regex'];

如果您正在尝试删除的财产不存在,删除将没有任何效果,并将返回真实。

因此,删除不能在全球范围内删除任何功能(无论是函数定义或函数(表达)的一部分)。

任何以 let 或 const 声明的属性都不能从它们被定义的范围内删除. 不可配置的属性不能删除. 这包括构建物品的属性,如 Math、Array、Object 和用 Object.defineProperty(等方法创建为不可配置的属性。

下面的剪辑给了另一个简单的例子:

有关更多信息和查看更多例子,请参阅下面的链接:

尝试下面的方法. 将对象属性值分为未定义。

var myObject = {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}; myObject.regex = undefined; myObject = JSON.parse(JSON.stringify(myObject)); console.log(myObject);