如何从 JavaScript 对象中删除键?

IT技术 javascript
2021-01-17 04:04:03

假设我们有一个具有这种格式的对象:

var thisIsObject= {
   'Cow' : 'Moo',
   'Cat' : 'Meow',
   'Dog' : 'Bark'
};

我想做一个按键删除的功能:

removeFromObjectByKey('Cow');
3个回答

delete运算符允许您从对象中删除属性。

下面的例子都做同样的事情。

// Example 1
var key = "Cow";
delete thisIsObject[key]; 

// Example 2
delete thisIsObject["Cow"];

// Example 3
delete thisIsObject.Cow;

如果您有兴趣,请阅读了解删除以获得更深入的解释。

如果您循环对象中的键,并在它们匹配某个值时删除它们,这会在循环时影响键索引吗?
2021-03-22 04:04:03
在 10 年专注于 JS 的大大小小的职位开发中,我以前从未需要过这个,也不知道它存在。谢谢你,好心的先生,这篇文章。
2021-03-23 04:04:03
注意IE8delete在某些情况下使用时可能会抛出异常参见stackoverflow.com/questions/1073414/...
2021-03-25 04:04:03
这实际上并没有从地图中删除 ey。
2021-03-31 04:04:03
有谁知道这个操作的运行时间?
2021-04-08 04:04:03

如果你使用 Underscore.js 或 Lodash,有一个函数 'omit' 可以做到。
http://underscorejs.org/#omit

var thisIsObject= {
    'Cow' : 'Moo',
    'Cat' : 'Meow',
    'Dog' : 'Bark'
};
_.omit(thisIsObject,'Cow'); //It will return a new object

=> {'Cat' : 'Meow', 'Dog' : 'Bark'}  //result

如果要修改当前对象,请将返回的对象分配给当前对象。

thisIsObject = _.omit(thisIsObject,'Cow');

使用纯 JavaScript,请使用:

delete thisIsObject['Cow'];

纯 JavaScript 的另一种选择

thisIsObject = Object.keys(thisIsObject).filter(key =>
    key !== 'cow').reduce((obj, key) =>
    {
        obj[key] = thisIsObject[key];
        return obj;
    }, {}
);
赞成。在许多情况下,最好使用新的不可变对象。
2021-03-15 04:04:03
object.property = undefined 是合法的。完美地工作!(赞成)
2021-03-25 04:04:03
@shabunc 与纯 javascript 相同。delete o.properrty在幕后弊大于利,因为它更改了o的隐藏类并使其成为通用的慢速对象。
2021-04-06 04:04:03
投反对票。问题是下划线和 lodash _.omit 都返回新对象,不修改当前对象。所以,这有点不同。
2021-04-09 04:04:03
我对否决感到抱歉,但是 thisIsObject.cow = undefined; 非常具有误导性。Object.keys(thisIsObject) 仍然会选择“cow”。所以它并没有真正被删除。
2021-04-11 04:04:03

这很简单:

delete object.keyname;

或者

delete object["keyname"];
这个答案与第一个有什么不同?
2021-04-03 04:04:03
如果密钥是生成的数字,而我们不知道它存在,我们可以下一步: const unknownKey = 100500; delete object[`${unknownKey}`];
2021-04-12 04:04:03