为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡子哥哥 2021-09-04 17:35:27
我有一个对象数组,我想根据渲染复选框数组中的值对其进行过滤。(即:因此,如果选中了 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() 可以使用这些参数来正确过滤数据。非常感谢您的帮助
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

你可以像这样some在里面使用filter:


const filterData = (dataList, filterValues) =>

   dataList.filter(item =>

      filterValues.some(f => f.checked &&

         (f.max >= item.length) &&

         (item.length > f.min)

      )

   )


查看完整回答
反对 回复 2021-09-04
  • 1 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信