如何通过其ID从数组中删除项目。

huangapple go评论59阅读模式
英文:

How to remove an item in an array by its id

问题

我有一个问题,需要通过id来删除数组中的特定数据。我在谷歌上得到了一个提示,使用 filter() 是最好的方法来删除元素,就像下面的代码一样。

假设我有如下数据:

const [cart, setCart] = useState([{ id: 1, name: 'shirt', qty: 1 }, { id: 1, name: 't-shirt', qty: 1 }])

然后我有一个用于删除数组中项目的函数:

const removeCartItem = (e) => {
    e.preventDefault();
    let id = e.target.id; // 需要删除数据的id
    setCart((cart) =>
        cart.filter((item) => item.id !== id)
    );
}

这个方法没有起作用,所以我需要你的帮助,因为我对React.js不太熟悉。提前感谢您。

英文:

I have a problem to remove specific data inside an array by id. I get a hint in google using filter()is the best way to remove the element like code bellow.

lets say i have data like bellow

   const [cart,setCart] = useState([{id:1,name:shirt,qty:1},{id:1,name:t-shirt,qty:1}])

then i have a function to remove the item inside array

const removeCartItem = (e) => {
    e.preventDefault();
    let id = e.target.id;//the id needed to remove the data
    setCart((cart) =>
        cart.filter((item) => item.id !== id)
    );

}

this not working so i need your help because i dont familiar with react js
thankyou in advance

答案1

得分: 1

为了解决这个问题,您需要在执行比较之前将从 e.target.id 获取的 id 转换为数字。您可以使用 parseInt 函数来实现这个目的。以下是您代码的更新版本:

const removeCartItem = (e) => {
    e.preventDefault();
    const id = parseInt(e.target.id, 10); // 将 id 转换为数字
    setCart((cart) =>
        cart.filter((item) => item.id !== id)
    );
};

现在,比较 item.id !== id 将正常工作,并且具有匹配 id 的项目将从购物车数组中移除。

请确保将传递给 removeCartItem 函数的 id 是您要移除的项目的正确 id。

英文:

To fix this issue, you need to convert the id obtained from e.target.id to a number before performing the comparison. You can use the parseInt function for this purpose. Here's an updated version of your code:

  const removeCartItem = (e) => {
      e.preventDefault();
      const id = parseInt(e.target.id, 10); // Convert id to a number
      setCart((cart) =>
        cart.filter((item) => item.id !== id)
      );
    };

Now, the comparison item.id !== id will work correctly, and the item with the matching id will be removed from the cart array.

Make sure that the id you're passing to the removeCartItem function is the correct id of the item you want to remove.

huangapple
  • 本文由 发表于 2023年6月15日 15:46:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/76480207.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定