从数组中删除javascript中具有相同值的对象

时间:2017-09-28 07:24:37

标签: javascript

我正在使用动态对象初始化数组,结果正在跟随

var arr = [
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0}
];

现在我想从这个数组中删除任何对象,但没有找到合适的解决方案。有人可以帮我怎么做。

4 个答案:

答案 0 :(得分:1)

  

我想从这个数组中删除任何对象,但找不到合适的对象   溶液

您可以使用splice方法,它接受要删除的元素的索引(开始)以及要从起始索引中删除的元素数量的deleteCount

var arr = [{
    id: "1",
    name: "A",
    quantity: 1
  },
  {
    id: "2",
    name: "B",
    quantity: 2
  },
  {
    id: "3",
    name: "C",
    quantity: 3
  },
  {
    id: "4",
    name: "D",
    quantity: 4
  }
];
arr.splice(1, 1)
console.log(arr)

答案 1 :(得分:1)

在开头你必须知道要删除它的对象(例如id = x的对象)

然后你可以使用这段代码

arr = arr.filter(function(e){ return e.id != x });

答案 2 :(得分:1)

伙计们非常感谢你的帮助。我找到了解决这个问题的方法,以下是我想要的。

这是我设置初始值的数组。

var arr = [
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0}
];

我可以删除这样的任何对象:

arr.splice(arr[index], 1);

答案 3 :(得分:0)

解决方案是过滤你的arr数组,它具有非空值,如下所示:

 var arr = [
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0},
    {id: "", name: "", quantity: 0}
];

 arr = arr.filter((obj)=>obj.id!==''); // you can use any field to filter 
 arr = arr.filter((obj)=>obj.id!=='' || obj.name!=='');// multiple fields to filter

现在您的arr变量将使用非空字段的新数组对象进行更新