在JavaScript中按对象参数过滤和计数对象的JSON对象
我有一个关于在JavaScript中按对象参数过滤和计数对象的JSON对象,javascript,json,object,Javascript,Json,Object,我有一个关于JSON对象数据的filter和count的问题 如何对对象进行过滤和计数在site=false?在示例数据中,这将是3 如果SIT的总数是多少?在示例数据中,这将是4 我想为PROD做同样的事情 我尝试了以下方法: var SIT = response.filter(function (obj) { return obj.environment === "SIT"; }); 及 这是我的数据: { "cis": { "dsbgchop193": {
JSON对象
数据的filter
和count
的问题
如何对对象进行过滤和计数在site=false
?在示例数据中,这将是3
如果SIT的总数是多少?在示例数据中,这将是4
我想为PROD做同样的事情
我尝试了以下方法:
var SIT = response.filter(function (obj) {
return obj.environment === "SIT";
});
及
这是我的数据:
{
"cis": {
"dsbgchop193": {
"environment": "SIT",
"is_compliant": false
},
"dsbgchop194": {
"environment": "SIT",
"is_compliant": true
},
"dsbgchop195": {
"environment": "SIT",
"is_compliant": false
},
"dsbgchop196": {
"environment": "SIT",
"is_compliant": false
},
"id": "2017.10.17",
"psbgwais1v": {
"environment": "PROD",
"is_compliant": false
},
"psbgwais2v": {
"environment": "PROD",
"is_compliant": false
},
"rsbgwais1v": {
"environment": "PROD",
"is_compliant": false
},
"rsbgwais2v": {
"environment": "PROD",
"is_compliant": true
}
},
"rating": "",
"ssl": {}
}
您可以在使用对象的关键点时使用它计数并检查条件
var data={cis:{dsbgchop193:{environment:'SIT',is_compliant:false},dsbgchop194:{environment:'SIT',is_compliant:true},dsbgchop195:{environment:'sition:'false},dsbgchop196:{environment:'sition:'SIT,is_compliant:false},id:'2017.10.17',psbgwais1v:{environment:'PROD:'{environment:“PROD”,is_compliant:false},rsbgwais1v:{environment:“PROD”,is_compliant:false},rsbgwais2v:{environment:“PROD”,is_compliant:true},评级:,,ssl:{},
count=Object.keys(data.cis).reduce(函数(r,k){
返回r+!!(data.cis[k].environment=='SIT'&&&!data.cis[k].is_兼容);
}, 0);
console.log(count);
您可以在使用对象的键时使用它进行计数并检查条件
var data={cis:{dsbgchop193:{environment:'SIT',is_compliant:false},dsbgchop194:{environment:'SIT',is_compliant:true},dsbgchop195:{environment:'sition:'false},dsbgchop196:{environment:'sition:'SIT,is_compliant:false},id:'2017.10.17',psbgwais1v:{environment:'PROD:'{environment:“PROD”,is_compliant:false},rsbgwais1v:{environment:“PROD”,is_compliant:false},rsbgwais2v:{environment:“PROD”,is_compliant:true},评级:,,ssl:{},
count=Object.keys(data.cis).reduce(函数(r,k){
返回r+!!(data.cis[k].environment=='SIT'&&&!data.cis[k].is_兼容);
}, 0);
log(count);
过滤器是数组上的函数,而不是对象上的函数,这就是它不起作用的原因
您可以使用Object.keys
获取密钥,
并将它们映射到response.cis中的对象,以获得一个数组,以便进行筛选:
var items = Object.keys(response.cis).map(k => response.cis[k]);
items.filter(o => o.environment === "SIT" && !o.is_compliant);
// prints 3
items.filter(o => o.environment === "SIT");
// prints 4
filter
是数组上的函数,而不是对象上的函数,这就是它不起作用的原因
您可以使用Object.keys
获取密钥,
并将它们映射到response.cis中的对象,以获得一个数组,以便进行筛选:
var items = Object.keys(response.cis).map(k => response.cis[k]);
items.filter(o => o.environment === "SIT" && !o.is_compliant);
// prints 3
items.filter(o => o.environment === "SIT");
// prints 4
var数据={
“独联体”:{
“DSBG193”:{
“环境”:“坐下”,
“是否符合”:false
},
“DSBG194”:{
“环境”:“坐下”,
“是否合规”:正确
},
“DSBG195”:{
“环境”:“坐下”,
“是否符合”:false
},
“DSBG196”:{
“环境”:“坐下”,
“是否符合”:false
},
“id”:“2017.10.17”,
“psbgwais1v”:{
“环境”:“产品”,
“是否符合”:false
},
“psbgwais2v”:{
“环境”:“产品”,
“是否符合”:false
},
“rsbgwais1v”:{
“环境”:“产品”,
“是否符合”:false
},
“rsbgwais2v”:{
“环境”:“产品”,
“是否合规”:正确
}
},
“评级”:“,
“ssl”:{}
}
var statistics=Object.keys(data.cis).reduce(函数(stats,key){
var item=data.cis[key];
如果(item.environment=='SIT'){
stats.totalCount+=1;
如果(项目是否符合要求){
stats.compliantCount+=1;
}
}
返回统计;
},{totalCount:0,compliantCount:0});
console.log('statistics:',statistics);
.as控制台包装{最大高度:100%!重要;顶部:0;}
var数据={
“独联体”:{
“DSBG193”:{
“环境”:“坐下”,
“是否符合”:false
},
“DSBG194”:{
“环境”:“坐下”,
“是否合规”:正确
},
“DSBG195”:{
“环境”:“坐下”,
“是否符合”:false
},
“DSBG196”:{
“环境”:“坐下”,
“是否符合”:false
},
“id”:“2017.10.17”,
“psbgwais1v”:{
“环境”:“产品”,
“是否符合”:false
},
“psbgwais2v”:{
“环境”:“产品”,
“是否符合”:false
},
“rsbgwais1v”:{
“环境”:“产品”,
“是否符合”:false
},
“rsbgwais2v”:{
“环境”:“产品”,
“是否合规”:正确
}
},
“评级”:“,
“ssl”:{}
}
var statistics=Object.keys(data.cis).reduce(函数(stats,key){
var item=data.cis[key];
如果(item.environment=='SIT'){
stats.totalCount+=1;
如果(项目是否符合要求){
stats.compliantCount+=1;
}
}
返回统计;
},{totalCount:0,compliantCount:0});
console.log('statistics:',statistics);
。作为控制台包装{最大高度:100%!重要;顶部:0;}
或使用专用类:
let数据={
“独联体”:{
“DSBGCHOP 193”:{“环境”:“SIT”,“是否符合”:false}
,“dsbgchop194”:{“环境”:“SIT”,“是否符合”:true}
,“DSBGCHOP 195”:{“环境”:“SIT”,“是否符合”:false}
,“dsbgchop196”:{“环境”:“SIT”,“是否符合”:false}
,“id”:“2017.10.17”
,“psbgwais1v”:{“环境”:“产品”,“是否符合”:false}
,“psbgwais2v”:{“环境”:“产品”,“是否符合”:false}
,“rsbgwais1v”:{“环境”:“产品”,“是否符合”:false}
,“rsbgwais2v”:{“环境”:“产品”,“是否符合”:true}},“评级”:“ssl”:{}
}
类FilterableObject{
建造师(h){
这个,h=h;
}
过滤器(参数){
返回此.values.filter(参数)
}
获取值(){
如果(未定义===this.\u values){this.\u values=Object.values(this.h)}
返回此值。\u值;
}
}
F