如何使用angular获取对象内属性的长度

时间:2015-08-04 12:09:53

标签: javascript angularjs

我有一个名为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"
          },
      ]
}

2 个答案:

答案 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建议的角度滤镜,或者重复内部ngIfngShow的某些内容,或应用前面提到的过滤器直接重复。