You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在dataTables.js中通过列名称获取列索引?

问题

我定义了如下表格列配置:

const flagTableCols = [
{                                                   // 0      
  title: "#", 
  name: "LINE_NO",
  className:"text-end"    
},{                                                 // 1
  title: "Check #", 
  name: "CHECK_NM",
  className: "text-center",
},{                                                 // 2
  title: "Proj", 
  name: "PROJECT_NM",
  className: "text-center",
},{                                                 // 3
  title: "Vnd", 
  name: "VENDOR_CD",
  className: "text-center",
},{                                                 // 4
  title: "-", 
  name: "AMOUNT_2", 
  visible: false
}]

let flagTable = $('#flagTable').DataTable({
  data:         flagTableData,
  columns:      flagTableCols,
})

我想通过列的name值获取对应的列索引——比如输入CHECK_NM返回1,输入VENDOR_CD返回3。试过用flagTable.columns('CHECK_NM'),但返回的结果里找不到索引值,该怎么实现?

解决方法

方式1:直接从列配置数组查找

既然你已经有flagTableCols这个列配置数组,直接遍历它就能拿到索引,简单高效:

function getColumnIndexByName(colName) {
  return flagTableCols.findIndex(col => col.name === colName);
}

// 使用示例
getColumnIndexByName('CHECK_NM'); // 返回1
getColumnIndexByName('VENDOR_CD'); // 返回3
getColumnIndexByName('AMOUNT_2'); // 返回4

方式2:通过DataTables API获取

如果想依托DataTables实例来实现,可以用columns().indexes()方法,它会返回匹配列的索引集合,取第一个元素就是目标索引:

function getColumnIndexByApi(table, colName) {
  return table.columns(`[name="${colName}"]`).indexes()[0];
}

// 使用示例
getColumnIndexByApi(flagTable, 'CHECK_NM'); // 返回1
getColumnIndexByApi(flagTable, 'VENDOR_CD'); // 返回3

注意这里要使用属性选择器[name="${colName}"]来定位列,而不是直接传入列名。columns().indexes()返回的是DataTables的索引对象,通过[0]可以提取出对应的数字索引。

内容的提问来源于stack exchange,提问作者Travis Heeter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:32:54