如何过滤具有多个值的数组? |反应

How to filter an array with multiple values? | React

晚上好,

我有一个电影列表/数组,需要使用两个值(已发布和类别)进行过滤。当前代码允许用户过滤具有两个值 selected 的电影。但是我要解决的问题是 if;

此处当前代码:https://codesandbox.io/s/focused-sun-2lkfx?file=/src/App.js

我看过过滤特定值的示例,但是在用户可以指定某些内容并向其添加另一个过滤器的情况下,我不知道如何处理它。

下面是一个示例,说明如何过滤具有 2 个值的数组。

我还分叉了沙盒示例。 https://codesandbox.io/s/nifty-benji-p0n9m?file=/src/App.js

现在它应该可以正常工作了。

movies.filter((movie) => {
  return (
    isDateSelected(movie, filterPublished) &&
    isCategorySelected(movie, filterCategory)
  );
});

你在 useEffect 中搞砸了,覆盖了 result 变量。

我已经在 sandbox fork.

中为您修复了它
  useEffect(() => {
    //Filter options updated so apply all filters here
    const result = array
      .filter((item) =>
        filterCategory.length ? filterCategory.includes(item.category) : item
      )
      .filter((data) =>
        filterPublished.length ? filterPublished.includes(data.published) : data
      );

    setFilteredArray(result);
  }, [filterPublished, filterCategory]);