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

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


非常感谢您的帮助


胡子哥哥
浏览 249回答 1
1回答

眼眸繁星

你可以像这样some在里面使用filter:const filterData = (dataList, filterValues) =>   dataList.filter(item =>      filterValues.some(f => f.checked &&         (f.max >= item.length) &&         (item.length > f.min)      )   )
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript