我有一个对象数组,我想根据渲染的复选框数组中的值对其进行过滤。 (即:如果选中了 5 个复选框中的 2 个,我想通过这些复选框指定的参数来过滤数据。
我已经能够做一个快速但肮脏的解决方案版本,其中我对复选框数组的所有预期值进行硬编码,但我认为这确实没有必要
// Filter variable (array of objects)
const filterValues = [
{
"id": 1,
"min": 0,
"max": 5,
"checked": true
}..... ,
]
// Filter function taking in:
// dataList (an array of objects where each one has a [length] )
// filterValues (an array of objects as defined above)
const filterData = (dataList, filterValues) => {
return dataList.filter(item =>
(filterValues[0].checked &&
(filterValues[0].max >= item.length) &&
(item.length > filterValues[0].min))
|| (filterValues[1].checked && .... (....)
)
我试图在filterData中使用一些高阶函数的组合来映射出一个参数列表,然后.filter()可以使用这些参数来正确过滤数据。
非常感谢您的帮助
最佳答案
您可以使用some
在 filter
内,如下所示:
const filterData = (dataList, filterValues) =>
dataList.filter(item =>
filterValues.some(f => f.checked &&
(f.max >= item.length) &&
(item.length > f.min)
)
)
关于javascript - 使用 array.prototype.filter() 方法根据另一个数组的参数进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57364665/