javascript - 使用 array.prototype.filter() 方法根据另一个数组的参数进行过滤

标签 javascript arrays reactjs

我有一个对象数组,我想根据渲染的复选框数组中的值对其进行过滤。 (即:如果选中了 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()可以使用这些参数来正确过滤数据。

非常感谢您的帮助

最佳答案

您可以使用somefilter 内,如下所示:

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/

相关文章:

javascript - 如何使用文本字段名称和值访问动态数组中的正确对象?

reactjs - React-router - 无法读取未定义的属性 'query'

javascript - 用于实时跟踪的 ESRI javascript API

arrays - 如何遍历包含多个级别的对象和对象数组的数组?

sql - 更新 PostgreSQL 数组中的值

java - Java中的键>值配对数组

javascript - 前端路由器如何在 MVC 框架中工作?

javascript - 使用 ui-router 实现动态 URL 路由的最佳方法是什么

javascript - Angular 静态注入(inject)器错误

javascript - 如何动态呈现新的 Twitter 小部件?