删除键列表

Deleting a list of keys

在 Javascript 中,我有一个对象,我想删除多个键:

x = {"id":2,"user_id":1,"name":"document_name","description":"the  document","file_type":null,"file_id":null}
delete x.file_type
delete x.file_id

结果:

Object {id: 2, user_id: 1, name: "document_name", description: "the document"}

我更愿意在单个命令中删除所有键,也许传递一组键?
或者,使用某种类型的 underscore/lodash 过滤器来实现相同的目标。

['file_type', 'file_id'].forEach(function (key) {
  delete x[key];  
});

演示:http://jsbin.com/vevotu/1/

使用 Underscore,您可以使用 _.omit 来排除不必要的键:

_.omit(x, 'file_type', 'file_id');

但是请注意,omit returns 对象的 copy。所以它与使用 delete 运算符不同。

查看下面的演示。

var x = {"id":2,"user_id":1,"name":"document_name","description":"the  document","file_type":null,"file_id":null};
var result = _.omit(x, 'file_type', 'file_id');

alert(JSON.stringify(result, null, 4));
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>