Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何一次筛选多个对象属性?_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript 如何一次筛选多个对象属性?

Javascript 如何一次筛选多个对象属性?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我在react中有2个状态对象-1是我的总体数据对象状态,另一个是从更改的无线电/复选框控制的过滤器数据 { color: "blue" shape: "square" } 如果用户要选择color:blue和shape:square,我如何对其进行过滤以确保只返回数据集中包含这些值的结果 我下面的代码只适用于一种对象类型。它可以正确过滤颜色:蓝色,但当选择形状:方形时,数据仅过滤方形 function compareState(checkbo

我在react中有2个状态对象-1是我的总体数据对象状态,另一个是从更改的无线电/复选框控制的过滤器数据

{
  color: "blue"
  shape: "square"
}
如果用户要选择color:blue和shape:square,我如何对其进行过滤以确保只返回数据集中包含这些值的结果

我下面的代码只适用于一种对象类型。它可以正确过滤颜色:蓝色,但当选择形状:方形时,数据仅过滤方形

 function compareState(checkboxData, dataset) {
    let data = ''
    let selectedItems = [];
    console.log(checkboxData)
    if (checkboxData.hasOwnProperty('Compatible_with')) {
      Object.entries(checkboxData).map(check => {
        let key = check[0];
        let val = check[1];
        if (dataset[key][val] !== '') {
          data = dataset['name']
        } else {
          data = false
        }
      })
    }

我想我的问题是,如何确保满足两个(所有)标准来过滤我的数据?因为我在一个循环中,它无法被检索…

如果你对你的问题进行逻辑思考,答案是可以得到的:“确保两个(所有)标准都得到满足”-这意味着
color
shape
。换言之,
color=='blue'&&shape=='square'
对不起,我认为我的问题措辞不太好。我了解这一点,但如果我在
对象.entries(checkboxData)循环中循环数据
-此条件-
如果(数据集[key][val]!='')
-不能用于多个项目,我的评论也同样有缺陷:应该清楚的是,如果您想一次评估多个
属性=>复选框
配对,您不能通过一次迭代一个
复选框来完成。好吧-这是一个公平的解决方案。使用
减少
而不是
映射
并跟踪匹配项。
reduce
的单个结果可能是一个已检查属性的数组。