Подсчет массива Javascript и добавление результата в переменную

#javascript

#javascript

Вопрос:

У меня есть такой массив:

 var obj = {
    "people": [{
        "id": "100",
        "name": "name 1",
        "desc": "desc 1",
        "class": "a"
    }, {
        "id": "192",
        "name": "name 2",
        "desc": "desc 2",
        "class": "b"
    }, {
        "id": "324",
        "name": "name 3",
        "desc": "desc 3",
        "class": "b"
    }, {
        "id": "324",
        "name": "name 4",
        "desc": "desc 4",
        "class": "a"
    }, {
        "id": "324",
        "name": "name 5",
        "desc": "desc 5",
        "class": "a"
    }]
};
  

Я знаю, что, например, для того, чтобы получить все записи с классом «а», я делаю это:

 obj.people.filter(function(item) { return item.class === "a" });
  

Но как я могу подсчитать общее количество записей, содержащих класс «а»?

Ответ №1:

Вы можете использовать Array#length свойство из возвращаемого массива.

 count = obj.people.filter(function(item) { return item.class === "a" }).length;
  

Или используйте Array#reduce и добавьте сравнение.

 count = obj.people.reduce(function (r, item) { return r    (item.class === "a") }, 0);
  

Ответ №2:

Просто проверьте length массив, возвращаемый filter

 var result = obj.people.filter(function(item) { return item.class === "a" });
console.log( result.length );
  

или вы можете просто запустить цикл, который сообщает вам это количество

 var count = 0;
for( var counter = 0; counter < obj.people.length; counter   )
{
   ( obj.people[ counter ].class === "a" ) amp;amp; count  ;
}
console.log( count );