取消选择数据表行后如何正确删除数组中的索引或值?

Posted

技术标签:

【中文标题】取消选择数据表行后如何正确删除数组中的索引或值?【英文标题】:How properly remove an index or value in a array after deselect datatables row? 【发布时间】:2018-10-29 19:31:52 【问题描述】:

我正在通过连续选择然后将 Id 附加到隐藏字段中来处理示例 jQuery DataTables。不知何故,一旦我取消选择所选索引或值的行,也必须在隐藏字段的值中删除。但它反复或重复的Id。如何使用 javascript 正确实现删除数组中的项目。

数据:

第 1 行:ID:50 第 2 行:编号:55 第 3 行:ID:60

JS:

var dataTable = null;
var assignedTo = [];

 dataTable = $("#table").DataTable( ... );

        dataTable.off("select").on("select",
            function(e, dt, type, indexes) 
                dataTable.rows('.selected').every(function(rowIndex) 

                    assignedTo.push(dataTable.row(rowIndex).data().Id);

                    $("#AssignedTo").val(JSON.stringify(assignedTo));
                );
            );

        dataTable.off("deselect").on("deselect",
            function(e, dt, type, indexes) 
                dataTable.rows( selected: false ).every(function(rowIndex) 

                    assignedTo.splice(rowIndex, 1);

                    $("#AssignedTo").val(JSON.stringify(assignedTo));
                );
            );

输出:如果我选择第 1 行和第 2 行

值="[50, 55]"

输出:如果我取消选择第 2 行,那么

值="[50]"

输出:如果我取消选择所有行,那么

值="[]"

【问题讨论】:

一个工作代码 sn-p 在这里真的很有帮助 =) 取消选择需要执行相同的选择逻辑。如果取消选择该元素,dataTables.rows('.selected') 将返回所有仍被选中的记录,您可以重建完整的数组。不要尝试从字符串中删除元素。重建它 @Taplar 你是什么意思? 对选择逻辑执行与取消选择逻辑完全相同的操作。 @Taplar 抱歉,它不起作用。它只是像这样附加或乘以 Id,value="[50, 55, 55]" 【参考方案1】:

var dataTable = $("#table").DataTable( ...
);

function rebuildAssignedToValue(e, dt, type, indexes) 
  //make a new result array each time
  var assignedTo = [];
  
  //push all the selected value to the array
  dataTable.rows('.selected').every(function(rowIndex) 
    assignedTo.push(dataTable.row(rowIndex).data().Id);
  );
  
  //update the value once
  $("#AssignedTo").val(JSON.stringify(assignedTo));


//reuse the common method for both events
dataTable.off("select").on("select", rebuildAssignedToValue);
dataTable.off("deselect").on("deselect", rebuildAssignedToValue);

【讨论】:

以上是关于取消选择数据表行后如何正确删除数组中的索引或值?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中怎样让一个有10个元素的数组输出5个元素后换行后再输出另外五个函数

如何在swift中删除行后刷新tableview?

SQLite):删除行后自动更新两个表中的索引

LeetCode 421. 数组中两个数的最大异或值

iPhone中的多值选择/取消选择

421. 数组中两个数的最大异或值