Arrays 使用Vue js计算数组中特定类别的筛选项的长度
我有一个如下所示的数组:Arrays 使用Vue js计算数组中特定类别的筛选项的长度,arrays,vuejs2,count,Arrays,Vuejs2,Count,我有一个如下所示的数组: { "blogs": [ { "id": 1, "name": "Test title 1", "category": "tennis", }, { "id": 2, "name": "Test titel 2&q
{
"blogs": [
{
"id": 1,
"name": "Test title 1",
"category": "tennis",
},
{
"id": 2,
"name": "Test titel 2",
"category": "football",
},
// etc
}
我知道我可以像这样得到数组的长度{{getFilteredata.length}
但我如何计算某一类别物品的长度呢
更新:
我设法显示了一个类别长度,并结合了活动过滤器。下面是结果的一个例子
但现在我只把它定义为网球类。如何组合此方法,使其独立显示所有3个类别的长度
更新2:
多亏了Mohammed的回答,我用了一种方法,而不是使用计算属性。通过这些方法,您可以传递参数。您可以使用以下方法:
getLengthofaCategory(cat){
var categoryLength = blogs.filter((item) => item.category == cat);
return categoryLength.length;
}
您仍然应该使用computed,因为如果让它返回一个包含每个类别计数的对象,则无需传递参数,而是将该类别指定为对象键。返回带有计数的对象的方法是使用reduce。通过使用computed函数,只有当它所依赖的数据发生更改时,函数才会再次执行,而不是每次都要花费调用过滤器的费用,对象访问速度要快几百倍我曾经为此做过一次jsperf
computed: {
categoryCount: function() {
return blogData.blogs.reduce((catCount, blogData) => {
catCount[blogData.category] = catCount[blogData.category] || 0;
catCount[blogData.category]++
return catCount;
}, {})
}
}
// USAGE: categoryCount['tennis']
blogs.filter{category}=>category===='which'。length@Robby对不起,我还不明白。在我的示例中,我必须如何使用它?