[英]Javascript Array count and add result to variable
I have an array like this: 我有这样一个数组:
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"
}]
};
I know that for example, in order to get all the records with class "a" I do this: 我知道,例如,为了获得类“a”的所有记录,我这样做:
obj.people.filter(function(item) { return item.class === "a" });
But How can I count to total number of records that contain class "a" ? 但是,如何计算包含“a”类的记录总数?
You could use the Array#length
property from the returned array. 您可以使用返回数组中的Array#length
属性。
count = obj.people.filter(function(item) { return item.class === "a" }).length;
Or use Array#reduce
and add the comparison. 或者使用Array#reduce
并添加比较。
count = obj.people.reduce(function (r, item) { return r + +(item.class === "a") }, 0);
Just check the length
of array returned by the filter
只需检查filter
返回的数组length
var result = obj.people.filter(function(item) { return item.class === "a" });
console.log( result.length );
or you can simply run a loop that tells you this count 或者你可以简单地运行一个循环,告诉你这个计数
var count = 0;
for( var counter = 0; counter < obj.people.length; counter++ )
{
( obj.people[ counter ].class === "a" ) && count++;
}
console.log( count );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.