gpt4 book ai didi

javascript - 删除数组元素是一个问题

转载 作者:行者123 更新时间:2023-11-28 21:15:59 24 4
gpt4 key购买 nike

我有一种情况,我通过单击按钮添加表,并且每个表都存储在数组中。现在,当我删除 2 或 3 个表时,错误的索引将被删除。

addTable: function (obj) {
for (var i = 0; i < obj.length; i++) {

// Adding of table
array.push(obj)
// delete code of the table
(function (i) {
deleteButton.addEventListener('click', function (e) {
array.splice(i, 1);

});
})(i);

}
}

我面临的问题是 i 的值始终。每次我单击按钮时,都会调用 addTable 函数,并且计数器始终,并传递给 function(i)也是。

关于如何跟踪不同的 i 或计数器以便删除数组中正确的索引的任何想法

这是更新

这是我每次发送的示例对象。

每次我单击“添加表”按钮时,都会传递相同的对象。现在我很难跟踪每个项目的索引。

最佳答案

一旦您删除了一个表,所有其他表都已移动,并且您在删除按钮中安装的索引现在将是错误的。当您从数组中删除项目时,所有索引都会发生变化。

所以,假设您删除表 3。然后,您对表 4 按删除。它的索引为 4,但由于您已经删除了表 3,所以它现在位于数组中的位置 3(在上次删除之后),不是点 4。但是,您的代码仍然具有与该表关联的 i==4,并试图在此处删除它,但它不再存在了。

你正在做的事情并不是一个好方法。如果您想进一步扩展您真正想做的事情,我们可以提供更好的解决方案。

鉴于我们迄今为止掌握的信息有限,我所知道的就是在数组中找到该项目(无论它可能移动到哪里)并从那里删除它。

addTable: function (obj) {
for (var i = 0; i < obj.length; i++) {

// Adding of table
array.push(obj)
// delete code of the table
(function (item) {
deleteButton.addEventListener('click', function (e) {
// search through the array to find where this item is
// and remove it from the array
for (var j = 0; j < array.length; j++) {
if (array[j] === item) {
array.splice(j, 1); // remove it
break;
}
}

});
})(obj);
}
}

关于javascript - 删除数组元素是一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7579663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com