反应挂钩-从数组中删除多对象并更新状态

时间:2020-02-19 11:45:47

标签: javascript reactjs react-hooks

如何删除数组的多个对象并更新状态? 我已从复选框中选择了多个项目 这是选定的项目[5,4,3] 我想根据ID删除数组中的所有项目并更新状态 这是我的代码

 const [products, setProducts] = useState();

 const DeleteProducts = () => {
  const selectedItems = [5, 4, 3];

    selectedItems.forEach(function(p) {
      setProducts(products.filter(prd => prd.id !== p));
    });
}

它一次只删除一项,但是我选择了3项。如何在产品状态下显示除3个选定项目以外的其余项目? 谢谢

2 个答案:

答案 0 :(得分:2)

您可以将其简化为单个过滤器功能:

// replace_copy_if example
#include <iostream>     // std::cout
#include <vector>       // std::vector

int main () {
  std::vector<int> foo{1,2,3,4,5,6,7};
  std::vector<int> bar{10,20,30,40,50,60,70};

  for (size_t i = 0; i < bar.size(); i++)
  {
     if (foo[i]%2==1) foo[i]=bar[i];
  }


  std::cout << "bar contains:";
  for (auto i: foo){ std::cout << ' ' << i; }
  std::cout << '\n';

  return 0;
}

答案 1 :(得分:1)

const DeleteProducts = () => {
  const filteredProducts = products.filter(product => !product.selected);
  setProducts(filteredProducts);
};