#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 );