我想使用js过滤器方法找到具有特定文字的项目。
var num =
[
{
"name": "name1 ",
"category": "test"
},
{
"name": " name2",
"category": "test2"
},
{
"name": "name3",
"category": "cat3"
},
{
"name": "name 4",
"category": "cat 4"
}
];
num是一个对象;
现在,我想查找带有文本“ cat”的类别数。所以我想要结果2。如何使用过滤器方法获得结果。
答案 0 :(得分:1)
num是一个对象;
是的,但具体来说是一个 array 对象。
您可以为此使用filter
,但是如果您不希望匹配结果数组,则reduce
是更合适的选择:
var result = num.reduce(function(sum, entry) => sum + (entry.category.includes("cat") ? 1 : 0), 0);
实时示例:
var num =
[
{
"name": "name1 ",
"category": "test"
},
{
"name": " name2",
"category": "test2"
},
{
"name": "name3",
"category": "cat3"
},
{
"name": "name 4",
"category": "cat 4"
}
];
var result = num.reduce(function(sum, entry) {
return sum + (entry.category.includes("cat") ? 1 : 0);
}, 0);
console.log(result);
或与ES2015 +:
const num =
[
{
"name": "name1 ",
"category": "test"
},
{
"name": " name2",
"category": "test2"
},
{
"name": "name3",
"category": "cat3"
},
{
"name": "name 4",
"category": "cat 4"
}
];
const result = num.reduce((sum, entry) => sum + (entry.category.includes("cat") ? 1 : 0), 0);
console.log(result);
或者当然是一个简单的for
循环。
答案 1 :(得分:1)
这是您的操作方法
var num =
[
{
"name": "name1 ",
"category": "test"
},
{
"name": " name2",
"category": "test2"
},
{
"name": "name3",
"category": "cat3"
},
{
"name": "name 4",
"category": "cat 4"
}
];
console.log( num.filter(i => i.category.indexOf("cat") === 0).length )
答案 2 :(得分:0)
这很简单。在ES6中,解决方案是这样:
const countOfCats = num.filter(entry => entry.category.match('cat')).length;