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

如何使用Google Visualization获取表格指定行的所有列值?

问题:Google Visualization表格如何获取指定行的所有列数据

我有一个基于Google Visualization的表格,希望获取指定行的所有列数据。目前我已能通过以下代码成功获取单个列的值:

const valueRowCol = dataRef.getValue(0, 0);

请问是否存在可以返回整行所有列数据的函数?

相关代码示例:

google.charts.load('current', {
  'packages': ['table']
});
google.charts.setOnLoadCallback(drawTable);

var globalTableRef = {};

function drawTable() {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Name');
  data.addColumn('number', 'Salary');
  data.addColumn('boolean', 'Full Time Employee');
  data.addRows([
    ['Mike', {
      v: 10000,
      f: '$10,000'
    }, true],
    ['Jim', {
      v: 8000,
      f: '$8,000'
    }, false],
    ['Alice', {
      v: 12500,
      f: '$12,500'
    }, true],
    ['Bob', {
      v: 7000,
      f: '$7,000'
    }, true]
  ]);

  var table = new google.visualization.Table(document.getElementById('table_div'));
  globalTableRef.dataRef = data;

  table.draw(data, {
    showRowNumber: true,
    width: '100%',
    height: '100%'
  });
}

function getRowValue() {
  const {
    dataRef
  } = globalTableRef;

  const valueRowCol = dataRef.getValue(0, 0);
  console.log(valueRowCol);
  
  // 我想要获取该行的所有列数据???
  const valueRow = {}; 
  console.log(valueRow);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="table_div"></div><br/>
<button onclick="getRowValue()">getRowValue</button>

解决方案

Google Visualization的DataTable提供了几种获取整行数据的方式,根据你的需求可以选择不同方法:

1. 直接获取原始值数组

使用getRow(rowIndex)方法,返回指定行的所有原始值(即数据中的v属性,简单值则直接返回)组成的数组:

function getRowValue() {
  const { dataRef } = globalTableRef;
  // 获取第0行的所有原始值
  const rowValues = dataRef.getRow(0);
  console.log(rowValues); // 输出: ["Mike", 10000, true]
}

2. 构建带列名的结构化对象

如果需要将行数据整理为以列名为键的对象,同时包含原始值和格式化显示值,可以循环列索引实现:

function getRowValue() {
  const { dataRef } = globalTableRef;
  const rowIndex = 0;
  const valueRow = {};
  
  // 遍历所有列,组装数据
  for (let colIndex = 0; colIndex < dataRef.getNumberOfColumns(); colIndex++) {
    const colName = dataRef.getColumnLabel(colIndex);
    valueRow[colName] = {
      raw: dataRef.getValue(rowIndex, colIndex),
      formatted: dataRef.getFormattedValue(rowIndex, colIndex)
    };
  }
  
  console.log(valueRow);
  /* 输出结构:
  {
    "Name": { raw: "Mike", formatted: "Mike" },
    "Salary": { raw: 10000, formatted: "$10,000" },
    "Full Time Employee": { raw: true, formatted: "true" }
  }
  */
}

3. 获取与初始化结构一致的行数据

使用getTableRow(rowIndex)方法,返回和你初始化时一致的行数据结构(包含v和f属性的对象):

function getRowValue() {
  const { dataRef } = globalTableRef;
  const rowIndex = 0;
  const tableRow = dataRef.getTableRow(rowIndex);
  console.log(tableRow);
  /* 输出:
  ["Mike", { v: 10000, f: "$10,000" }, true]
  */
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:25:42