jQuery DataTable 如何仅获取选中行ID且不附带元数据
实现说明
该需求完全可实现。之前控制台输出附带大量冗余元数据,是因为rows({selected: true}).ids()返回的不是原生JavaScript数组,而是DataTables封装的专用API结果集对象——浏览器控制台会默认展开显示该对象的内部属性、原型链信息,并非获取到的rowId值本身混杂了多余内容。
具体操作方法
- 对
.ids()返回的封装对象做一次原生数组转换,就能得到完全由纯rowId字符串组成的普通数组,无任何额外元数据。 - 两种等价的转换写法,任选其一即可:
- 调用DataTables内置的
toArray()方法完成转换:
将原有取值代码替换为const selectedRowIds = listtable.rows({selected: true}).ids().toArray(); - 使用原生JS展开运算符转换,效果完全一致:
const selectedRowIds = [...listtable.rows({selected: true}).ids()];
- 调用DataTables内置的
- 你已正确配置
rowId: '_id.$oid'规则,转换后的数组每一项就是匹配到的纯字符串值,和示例中MongoDB的_id.$oid值格式完全匹配(即类似6040bfdc1659e2002d990005的纯字符串),不会附带嵌套的对象结构。
修正后的删除按钮逻辑代码
$("#delete").click((event) => { const listtable = $("#policyTable").DataTable(); // 获取选中行的纯rowId字符串数组,无冗余元数据 const selectedRowIds = listtable.rows({selected: true}).ids().toArray(); $("#button").hide(); // 此时控制台输出为 ["6040bfdc1659e2002d990005"] 这类纯值数组 console.log(selectedRowIds); })
补充提示:若不做数组转换直接打印封装对象,控制台依然会展示对象内部的元数据,只有完成原生数组转换后,拿到的结果才可直接用于后续删除接口调用、参数传递等场景。
内容的提问来源于stack exchange,提问作者drake1994
相关产品推荐
相关产品推荐

