带有对象的jQuery数组,拼接不按预期工作

时间:2017-06-29 15:32:16

标签: jquery

你好,

我的页面上有一个数组。在这个数组中,我点击它后插入一个对象。但是,我似乎有从数组中删除它的问题。这很奇怪,因为完全相同的代码似乎适用于另一个数组:它确实删除了该对象。我按索引删除对象:

代码放在我的JS文件之上。

var f__packages = [];

点击后,在数组中插入对象。

 var packages = {};
   for (var i = 0; i < results.length; i++) {
      packages['obj'] = results[i].id;
    }
f__packages.push(packages);

直到这里,它运作良好。它在我的数组中插入一个对象。然而,现在是棘手的部分。当我再次单击它时,应该从数组中删除该对象。

 var index__pid = f__packages.findIndex(y => y.obj==value);
 console.log(index__pid);
 f__packages.splice(index__pid, index__pid);

它确实找到了正确的索引,有时它会从数组中删除带有该索引的对象。但是,并非总是如此。它似乎与数组中的最后一个对象有最多的问题。如果没有(也是索引:0),则失败。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

这一行错了:

f__packages.splice(index__pid, index__pid);

将其更改为:

f__packages.splice(index__pid, 1);
  

Array.prototype.splice()

     

splice()方法通过删除现有元素和/或添加新元素来更改数组的内容。

     

<强>语法

     

array.splice(start)
  array.splice(start, deleteCount)
  array.splice(start, deleteCount, item1, item2, ...)

     

start
  开始更改数组的索引(原点为0)。如果大于数组的长度,实际的起始索引将设置为数组的长度。如果是负数,将从数组的末尾开始那么多元素(使用原点1),如果绝对值大于数组的长度,则将设置为0。

     

deleteCount (可选)
  一个整数,指示要删除的旧数组元素的数量。如果deleteCount为0,则不会删除任何元素。在这种情况下,您应该至少指定一个新元素。如果deleteCount大于从start开始的数组中剩余的元素数,则将删除通过数组末尾的所有元素。   如果省略deleteCount,或者其值大于array.length - start,则将删除以数组末尾的start index开头的所有元素。

     

item1, item2, ... (可选)
  要添加到数组的元素,从起始索引开始。如果您未指定任何元素,splice()将仅从数组中删除元素。