2015-08-04 2 views
0

У меня есть объект json, называемый программами. Внутри этого объекта у меня есть массив ключей/значений. Мне нужно узнать, сколько объектов имеет ключ/значение «статус»: «Обзор». Итак, у нас есть 4 объекта, а два из них имеют «статус»: «Обзор». Мне нужно вернуть это число (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

Вы можете использовать простой цикл для итерации 'программ'. – Satpal

+1

data.programs.filter (функция (пункт) { возвращение item.status == "Обзор"; }). Длина ссылка http://jsfiddle.net/4sq2crqv/ – venkat7668

ответ

2

Зависит от того, где это необходимо? Если это в йот вы можете сделать что-то вроде этого:

{{ (myObject.programs | filter:{ status: 'Review' }).length }} 

Вот jsFiddle показывая его: http://jsfiddle.net/2jx5oL78/

+0

Работает идеально, используя угловой фильтр !! Спасибо за отличный ответ !!! – jmccommas

1

Лучше бы, вероятно, быть Array.prototype.filter(), который не является специфическим для Угловое. Например:

// 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 Берг, или что-то вдоль линий в ngIf или ngShow в повторе, или применение вышеупомянутого фильтра непосредственно на повтор ,

Смежные вопросы