首页 > 解决方案 > 如何从对象中删除项目

问题描述

我正在使用数据表和导入器 CSV 文件来填充表格并填充隐藏的输入

当我按下表中的删除按钮时,我正在尝试删除一个项目,此刻我有这个

        $('#task-place-table tbody').on('click', '.deleted', function () {
            dataTable
                .row($(this).parents('tr'))
                .remove()
                .draw();
            itemCounter--;
            document.getElementById('item-counter').value = itemCounter;
        });

在此处输入图像描述

此代码可以从表中删除项目,但不能从隐藏输入中删除

例如,这是输入

[{"url":"http://www.restaurant.com","businessTypeId":"1"},{"url":"http://www.hotel.com","businessTypeId":"2"},{"url":"http://www.test.com","businessTypeId":"3"}]

在示例中,我删除了餐厅和测试项目,但在隐藏输入中,项目仍然存在(注意:businessTypeId 不是行 ID

当我从表中删除一个项目时,我想拥有这个

[{"url":"http://www.hotel.com","businessTypeId":"2"}]

重要说明:businessTypeId 不是行 ID 或项目 ID,数字 2 是巧合(该数字是数据库中的 ID)

如何删除项目?

标签: javascriptobjectdatatables

解决方案


解决方案,用splice和for,循环遍历数组,可以清除以url为参考的数据

        $('#task-place-table tbody').on('click', '.deleted', function () {
            let value = $(this).closest('tr').find('td').eq(1).text();
                for (let i = 0; i < placesArray.length; i++) {
                    if (placesArray[i].url == value) {
                        placesArray.splice(i, 1);
                        break;
                    }
                }
                $('#places').val(JSON.stringify(placesArray));

            dataTable
                .row($(this).parents('tr'))
                .remove()
                .draw();
            itemCounter--;
            document.getElementById('item-counter').value = itemCounter;
        });

推荐阅读