我有以下对象:
var obj = { "2014": {}, "2013": {}, "2012": {}, "description": null, "image": null },
objKeys = Object.keys(obj);
//objKeys contains [ "2014", "2013", "2012", "description", "image" ]
如果它们存在,我想一次性删除objKeys数组中的“description”和“image”。
我怎样才能做到这一点?
答案 0 :(得分:2)
您希望保留的键始终是数字吗?我假设他们已经过了很多年......#/ p>
objKeys.filter(Number); // ["2012", "2013", "2014"]
答案 1 :(得分:1)
你可以像这样过滤掉它们:
objKeys = objKeys.filter(function(x){ return !/[a-z]/gi.test(x)});
以上使用其他键是数字的事实。如果您只想要description
和image
,请将它们放入数组中并执行此操作:
var removeKeys = ["description","image"];
objKeys = objKeys.filter(function(x){ return !new RegExp(removeKeys.join("|")).test(x)});
答案 2 :(得分:1)
您可以使用正则表达式直接过滤它们。
objKeys = objKeys.filter(function(k){ return !/(description|image)/gi.test(k)});
答案 3 :(得分:1)
@ hutchbat答案的一个小修改,为什么对键进行两次迭代?
Object.keys是一个,过滤器是另一个。这是我的代码
var objKeys = [];
for(var i in obj) if(!/(description|image)/gi.test(i)) objKeys.push(i);
所以它迭代一次并收集所需的。