从javascript数组中拼接2个键的最佳方法

时间:2014-06-22 08:55:46

标签: javascript arrays

我有以下对象:

var obj = { "2014": {}, "2013": {}, "2012": {}, "description": null, "image": null },
    objKeys = Object.keys(obj);
//objKeys contains [ "2014", "2013", "2012", "description", "image" ]

如果它们存在,我想一次性删除objKeys数组中的“description”和“image”。

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:2)

您希望保留的键始终是数字吗?我假设他们已经过了很多年......#/ p>

objKeys.filter(Number); // ["2012", "2013", "2014"]

答案 1 :(得分:1)

你可以像这样过滤掉它们:

objKeys = objKeys.filter(function(x){ return !/[a-z]/gi.test(x)});

以上使用其他键是数字的事实。如果您只想要descriptionimage,请将它们放入数组中并执行此操作:

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);

所以它迭代一次并收集所需的。