首页 > 解决方案 > 如何从数组中删除单个对象

问题描述

我正在尝试从嵌套数组中删除一个对象。我的情况是数组中有多次相同的对象,我应该是这样。那么如何从数组中删除一个对象,即使它们是其中的相同对象。我过去的尝试是filterslice方法。但它们实际上是一次删除所有相同的对象。

const data = {
    { id:1, name:'test'},
    { id:1, name:'test'},
    { id:1, name:'test'},
    { id:2, name:'test2'},
    { id:2, name:'test2'},
}

一次执行后的预期结果:

    { id:1, name:'test'},
    { id:1, name:'test'},
    { id:2, name:'test2'},
    { id:2, name:'test2'},

标签: javascriptarraysnode.jsobjectslice

解决方案


这些实际上是我的 redux 商店的一部分,我需要将相同的物品多次放入购物车然后结帐。所以我想保留重复的对象并在点击时只删除一个

从这个响应中,我猜想你需要在(React?任何框架)中显示对象时存储它的索引,然后当你调度一个动作到 remove_item 时,将索引作为有效负载传递。如果没有一个最小的完整示例,很难确定,但是有了这些给定,您将需要:

const data = {
  items: [
    { id:1, name:'test'},
    { id:1, name:'test'},
    { id:1, name:'test'},
    { id:2, name:'test2'},
    { id:2, name:'test2'},
  ],
};

const removeItem = (items, index) => ([ ...items.slice(0, index), ...items.slice(index + 1)]);

console.log(data);
data.items = [ ...removeItem(data.items, 2) ] ;
console.log(data);


推荐阅读