Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript数组拼接2个键的最佳方法_Javascript_Arrays - Fatal编程技术网

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

从javascript数组拼接2个键的最佳方法,javascript,arrays,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”,我想一次性删除它们 我如何才能做到

我的目标如下:

var obj = { "2014": {}, "2013": {}, "2012": {}, "description": null, "image": null },
    objKeys = Object.keys(obj);
//objKeys contains [ "2014", "2013", "2012", "description", "image" ]
如果objKeys数组中存在“description”和“image”,我想一次性删除它们


我如何才能做到这一点?

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

objKeys = objKeys.filter(function(x){ return !/[a-z]/gi.test(x)});
上面使用了其他键都是数字的事实。如果只需要
说明
图像
,请将它们放入数组中,然后执行以下操作:

var removeKeys = ["description","image"];
objKeys = objKeys.filter(function(x){ return !new RegExp(removeKeys.join("|")).test(x)});

您希望保留的键是否始终为数字?我假设他们是“年”

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

您可以使用regex直接过滤它们

objKeys = objKeys.filter(function(k){ return !/(description|image)/gi.test(k)});

对@hutchbat答案的一个小修改,为什么要在关键点上进行两次迭代

Object.keys是一个,filter是另一个。这是我的密码

var objKeys = [];
for(var i in obj) if(!/(description|image)/gi.test(i)) objKeys.push(i);
所以它迭代一次并收集所需的数据