如何使用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
相关产品推荐
相关产品推荐

