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

标签 javascript

我有一种情况,我通过单击按钮添加表,并且每个表都存储在数组中。现在,当我删除 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/

相关文章:

javascript - P5 的 react 速度为 60 FPS

javascript - 原型(prototype)对象不是实例吗?

javascript - 自定义 slider (切换 slider )无法使用 jquery

javascript - 如何在 JavaScript 中的 for 循环中创建动态数组元素名称?

javascript - 从 Qualtrics 页面删除 "Next"按钮

javascript - 如何在下面的 `value: _value(this.from, this.to, line)` 行中获得 DRY?

javascript - 在 iOS (PhoneGap) 上滚动停止后才会呈现图像

javascript - Angularjs ng-Grid注入(inject)错误

javascript - 从每个标签 onclick 获取 ID

javascript - 即使页面刷新后,如何使用本地存储在本地存储输入文件状态?