我有以下数组。
"APP-A": {
"active": true
},
"APP-B": {
"active": true
},
"APP-C": {
"active": true
},
"BOOL-A": {
"active": true
},
"BOOL-B": {
"active": true
},
"BOOL-C": {
"active": true
},
我需要得到数组中APP - *的总数。 我试图在角度JS中实现。普通JS中的解决方案也会有所帮助。
TIA
答案 0 :(得分:2)
一种方法是在对象的键上使用.filter()
:
var count = Object.keys(obj).filter(function (key) {
return key.indexOf(prefix) === 0;
}).length;
答案 1 :(得分:1)
可以尝试这样:
var items = { "APP-A": {
"active": true
},
"APP-B": {
"active": true
},
"APP-C": {
"active": true
},
"BOOL-A": {
"active": true
},
"BOOL-B": {
"active": true
},
"BOOL-C": {
"active": true
}
};
var c=0;
for(var item in items)
{
if(item.indexOf("APP-") >= 0)
c++;
}
console.log(c);// your count here.
答案 2 :(得分:1)
但实际上它不是数组,它是 JSON对象。而我们正在计算的是JSON密钥。
JS部分:
var items = { "APP-A": {
"active": true
},
"APP-B": {
"active": true
},
"APP-C": {
"active": true
},
"BOOL-A": {
"active": true
},
"BOOL-B": {
"active": true
},
"BOOL-C": {
"active": true
}
};
var app_count = 0;
for(var ik in items) {
if(ik.indexOf("APP-") >= 0) {
app_count++;
}
}
alert(app_count);
console.log(app_count);
答案 3 :(得分:1)
var myArray = {
"APP-A": {
"active": true
},
"APP-B": {
"active": true
},
"APP-C": {
"active": true
},
"BOOL-A": {
"active": true
},
"BOOL-B": {
"active": true
},
"BOOL-C": {
"active": true
}
};
var reg = /^APP-/,
count = 0,
name;
for (name in myArray) {
count += reg.test(name);
}
document.getElementById('output').innerHTML = count;
<div id="output"></div>
答案 4 :(得分:1)
看起来像是一个json,而不是一个数组。
var count = 0;
for (var key in json) {
key.indexOf('APP-')!==-1?count++,count;
}
答案 5 :(得分:0)
你可以这样做。
http://jsfiddle.net/098o3kch/1/
var items = { "APP-A": {
"active": true
},
"APP-B": {
"active": true
},
"APP-C": {
"active": true
},
"BOOL-A": {
"active": true
},
"BOOL-B": {
"active": true
},
"BOOL-C": {
"active": true
}
};
function getCount(obj,pattern){
var cnt = 0;
for(var item in obj)
{
if(item.indexOf(pattern) >= 0)
cnt++;
}
return cnt;
}
alert(getCount(items, "APP-"));