通过字符串数组筛选对象数组
filtering an array of objects by an array of strings
我正在用以下代码筛选对象数组:
filterCategory(category: [string]) {
this.projects = this.projects.filter(project => project.category == category);
}
它可以在一定程度上工作,但我想改进它,以便它将返回任何包含类别字符串的对象。
。
project: [{
name: "thing1"
category: ["Design", "Web Design"]
}, {
name: "thing2"
category: ["Web Design"]
}, {
name: "thing3"
category: ["Design"]
}, {
name: "thing4"
category: ["Design", "Web Design"]
}]
filterCategory("Design")
filterCategory设计目前只会返回thing3,但我希望它返回thing1, thing3和thing4。
JavaScript的数组。indexOf将查看每个数组值是否匹配。
project => project.category.indexOf(category) !== -1
project => {
for (let i = 0; i < project.category.length; i++) {
if (project.category[i] === category) {
return true;
}
}
return false;
}
我在ES6中找到了另一种(更少的代码)方法来做到这一点。您可以使用代替project => project.category.indexOf(category) !== -1
。包含来做同样的事情,所以最终代码看起来像这样:
project => project.category.includes(category)
对我来说也是一样的,如果你使用的是ES6的话,效果会更简洁一些。
相关文章:
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何筛选对象的数组属性
- 根据多个值筛选数组
- 如何按对象数组中的数组属性进行筛选
- 要筛选的数组的管道值的含义:$select.search in angular
- 如何筛选对象数组
- 具有绑定与未绑定函数的数组筛选器
- 角度筛选器 - 根据值数组筛选 JSON 结果
- 基于条件数组的数组筛选器
- 根据数组筛选字符串数组
- 按键数组筛选对象
- 基于索引数组筛选数组
- 通过字符串数组筛选对象数组
- 针对所有其他数组筛选数组
- Javascript:根据数组筛选键后,在对象中找到一个值最大的键
- 使用值数组筛选多个属性的值
- 使用另一个对象数组筛选对象数组
- 数组筛选器的异步或承诺条件
- 通过另一个整数数组筛选对象数组
- 按搜索查询进行数组筛选