你好,
我的页面上有一个数组。在这个数组中,我点击它后插入一个对象。但是,我似乎有从数组中删除它的问题。这很奇怪,因为完全相同的代码似乎适用于另一个数组:它确实删除了该对象。我按索引删除对象:
代码放在我的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),则失败。
我在这里做错了什么?
答案 0 :(得分:0)
这一行错了:
f__packages.splice(index__pid, index__pid);
将其更改为:
f__packages.splice(index__pid, 1);
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()
将仅从数组中删除元素。