带有对象的jQuery数组,未按预期工作

带有对象的jQuery数组,未按预期工作,jquery,Jquery,你好, 我的页面上有一个数组。在这个数组中,我在单击对象后插入它。但是,我似乎在从阵列中删除它时遇到了问题。这很奇怪,因为完全相同的代码似乎适用于另一个数组:在那里它确实删除了对象。我按索引删除对象: 我的JS文件顶部的代码。 var f__packages = []; var packages = {}; for (var i = 0; i < results.length; i++) { packages['obj'] = results[i].id; }

你好,

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

我的JS文件顶部的代码。

var f__packages = [];
 var packages = {};
   for (var i = 0; i < results.length; i++) {
      packages['obj'] = results[i].id;
    }
f__packages.push(packages);
单击后,作为对象插入数组。

var f__packages = [];
 var packages = {};
   for (var i = 0; i < results.length; i++) {
      packages['obj'] = results[i].id;
    }
f__packages.push(packages);
它确实找到了正确的索引,有时它确实从数组中删除了具有该索引的对象。然而,并非总是如此。数组中最后一个对象的问题似乎最多。如果没有更多索引(也包括索引0),则会失败

我做错了什么?

这行是错的:

f__packages.splice(index__pid, index__pid);
将其更改为:

f__packages.splice(index__pid, 1);

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

语法

阵列.拼接(开始)

阵列.拼接(开始,删除计数)

array.splice(开始、删除计数、项1、项2等)

开始

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

deleteCount
(可选)
一个整数,指示要删除的旧数组元素数。如果
deleteCount
为0,则不删除任何元素。在这种情况下,您应该至少指定一个新元素。如果
deleteCount
大于从开始时开始的数组中剩余的元素数,则整个数组末尾的所有元素都将被删除。 如果省略了
deleteCount
,或者其值大于
array.length-start
,则从开始索引打开到数组结束的所有元素都将被删除

项目1、项目2,…
(可选)
要添加到数组中的元素,从开始索引开始。如果未指定任何元素,
splice()
将仅从数组中删除元素


如果对象中只有一个属性(
obj
),为什么要循环?“单击”部分与:
f_upackages.push({'obj':results[results.length-1].id})
@Andreas相同,因为循环中有更多内容,但是为了便于阅读,我删除了它。它将其余部分添加到另一个数组中。
.splice(index\uu pid,index\uu pid)
没有多大意义。。。语法是:
array.splice(start,*deleteCount*)
,因此您正在从
index\uuPID
开始删除
index\uPID
元素实际上,我刚刚发现我确实做得不对。第二个参数应该是它应该移除的量。谢谢你的支持。