使用名称过滤器计算对象属性的数量

时间:2011-11-13 11:59:01

标签: javascript properties count key

我有一个看起来像的对象:

{a: 1, b:2, c:3, cp1:6, cp2:7 cp3:8, cp4:9}

我对我的Object中的cpX出现次数感兴趣,在Javascript(或jQuery)中有一种简单的方法来计算与模式匹配的出现次数。类似的东西:

Object.keys(myObj,/cp\d+/).length();

我知道我可以自己迭代,但如果这个功能已经存在,我不会感到惊讶。

3 个答案:

答案 0 :(得分:2)

这可能会这样做

var obj={a: 1, b:2, c:3, cp1:6, cp2:7 cp3:8, cp4:9};
var num=0;
for (var key in obj) {
  if (/^cp/.test(key)) {
    ++num;
  }
}
alert(num);

你可以使用地图来做到这一点,但我不确定是否存在本地功能

答案 1 :(得分:1)

纯javascript中没有特殊功能......对象和数组太差了......

您可以将underscore lib用于此目的。

代码将遵循:

$(function(){
  var a = {a: 1, b:2, c:3, cp1:6, cp2:7, cp3:8, cp4:9};
  var result = _(a).chain().keys().select(function(key){ return key.match(/^cp/);}).value().length;
  $('#results').html(result);
});

试试here

答案 2 :(得分:1)

Object.keys()不支持过滤数组项。但是你可以使用jQuery的grep()函数来过滤你的密钥。

这个有效:

var x = {a: 1, b:2, c:3, cp1:6, cp2:7, cp3:8, cp4:9};
var cpItemsLength = $.grep(Object.keys(x), function(n) { 
    return /cp\d+/.test(n);
}).length;