javascript - 具有多个参数或关键字的 JavaScript Filter() 函数
问题描述
我有一个产品列表对象,我创建了一个数组来应用过滤函数从该数组中获取参数。像下面
var selectedProducts = ['music', 'dance']
var products = [
{
ID : 1,
name : "pro1",
category : "music"
},
{
ID : 2,
name : "pro2",
category : "yoga"
},
{
ID : 3,
name : "pro3",
category : "music"
},
{
ID : 4,
name : "pro4",
category : "dance"
},
]
function filterFunction(){
return products.filter((abc) => {
selectedProducts.forEach(function(item, index){
return abc.category == selectedProducts[index]
});
});
}
我要做的是当用户选择任何复选框时,选定的值将存储在 selectedProducts[] 数组中,然后在这些值上调用过滤器函数,并将数组作为参数传递给 forEach 方法。代码在循环的每次迭代中都可以正常工作,但最后它会返回一个空的对象数组。我的代码有什么问题吗?
解决方案
true
从循环的回调函数返回forEach()
不会对过滤条件产生任何影响。
这是使用的替代方法Array.prototype.includes()
:
products.filter(({category}) => selectedProducts.includes(category));
完整片段:
const selectedProducts = ['music', 'dance']
const products = [
{
ID : 1,
name : "pro1",
category : "music"
},
{
ID : 2,
name : "pro2",
category : "yoga"
},
{
ID : 3,
name : "pro3",
category : "music"
},
{
ID : 4,
name : "pro4",
category : "dance"
},
]
function filterFunction(){
return products.filter(({category}) => selectedProducts.includes(category));
}
console.log(filterFunction());
推荐阅读
- python - 在 Windows 上使用 CUDA 的 OpenCV Python:DLL 加载失败
- r - 两组差异,数据处理
- c# - 在模态而不是重定向 C# MVC Ajax 中返回错误
- flutter - 使用 Navigator.push() 时的“无限循环”
- python - 从Arduino获取数据的问题它输出结束行字符Python
- powerbi - 条件格式矩阵中的总计 - Power bi
- laravel - 如何在 Cpanel 的子域 lumen/laravel 上安装免费 SSL?
- r - 在 R 中实现 BFS 算法的问题
- laravel - 雄辩的删除列
- ios - 从 iOS 和 GoogleDrive/iCloud 上传文件后的 inode/x-empty 内容类型