我有一个名为program的json对象。在这个对象中,我有一个键/值数组。我需要计算有多少对象的键/值为" status":" Review"。所以这里我们有4个对象和两个有" status":" Review"。我需要像这样(2)
返回这个计数{
"id": 3,
"organizationName": "Watertown School",
"programs": [
{
"id": 72,
"programId": 456456,
"programName": "name 1",
"programType": "Phd",
"applicationType": "Domestic",
"concentration": "Medicine",
"formId": 0,
"isReviewed": true,
"status": "Review"
},
{
"id": 73,
"programId": 4564561,
"programName": "name 2",
"programType": "Phd",
"applicationType": "Domestic",
"concentration": "Medicine",
"formId": 0,
"isReviewed": true,
"status": "Draft"
},
{
"id": 74,
"programId": 10343431,
"programName": "name 3",
"programType": "Phd",
"applicationType": "Domestic",
"concentration": "Medicine",
"formId": 0,
"isReviewed": true,
"status": "Review"
},
{
"id": 75,
"programId": 10031,
"programName": "namw 4",
"programType": "Phd",
"applicationType": "Domestic",
"concentration": "Medicine",
"formId": 0,
"isReviewed": true,
"status": "Draft"
},
]
}
答案 0 :(得分:2)
取决于你需要的地方?如果它在dom中你可以做这样的事情:
{{ (myObject.programs | filter:{ status: 'Review' }).length }}
这是一个jsFiddle显示它:http://jsfiddle.net/2jx5oL78/
答案 1 :(得分:1)
你最好的选择可能是Array.prototype.filter()
,这不是Angular特有的。例如:
// Assuming you had your object as obj
var obj = {}; //Stuff goes here
obj.programs = obj.programs.filter(function (value) {
if (value.hasOwnProperty('status') && value.status === "Review") {
return true;
}
return false;
});
从那里,您可以拨打obj.programs.length
。
过滤后的数组可以分配给任何变量,就像注释一样。所以,如果你只想要计数,这可能是有利的。
如果您正在寻找基于DOM的滤镜,您可以使用Mathew Berg建议的角度滤镜,或者重复内部ngIf
或ngShow
的某些内容,或应用前面提到的过滤器直接重复。