我有一个看起来像的对象:
{a: 1, b:2, c:3, cp1:6, cp2:7 cp3:8, cp4:9}
我对我的Object中的cpX出现次数感兴趣,在Javascript(或jQuery)中有一种简单的方法来计算与模式匹配的出现次数。类似的东西:
Object.keys(myObj,/cp\d+/).length();
我知道我可以自己迭代,但如果这个功能已经存在,我不会感到惊讶。
答案 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;