javascript - 如何从对象中删除项目
问题描述
我正在使用数据表和导入器 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)
如何删除项目?
解决方案
解决方案,用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;
});