这可能很简单,你可能会觉得很傻,但我很难过。我正在摆弄一些 jQuery 代码,这些代码应该从 2 列 HTML 表中提取数据,然后输出两个一维数组。例如 ['sample 1','sample 2', 'sample 3'...] 用于条形标签,例如 [645, 872, 423...] 用于Chartist图表中的条形值。
编辑:我后来发现“系列”数组应该是二维的,以允许在同一个图表中显示更多数据集。如果只使用一个“系列”数据集,请将括号括起来以将其转换为数组中的数组。
我已经设法将 HTML 表值放入一个 jQuery 对象中,如下所示:
var tdata = [];
var headers = [];
$('#myTable th').each(function(index, item) {
headers[index] = $(item).html();
});
$('#myTable tr').has('td').each(function() {
var tdataItem = {};
$('td', $(this)).each(function(index, item) {
tdataItem[headers[index]] = $(item).html();
});
tdata.push(tdataItem);
});
...其中 myTable 是一个 HTML 表格,例如:
<table id="myTable">
<tbody><tr>
<th>Oxide</th>
<th>Proportion</th>
</tr>
<tr>
<td>Ca0</td>
<td>0.73</td>
</tr>
<tr>
<td>Li2O</td>
<td>0</td>
</tr>
<tr>
<td>MgO</td>
<td>0.13</td>
</tr>
</tbody></table>
问题是我无法将第一列(在“氧化物”下)和第二列值(在“比例”下)放入它们自己的一维数组以输入 Chartist,它基本上需要这个:
var data = {
labels: ['CaO', 'Li2O', 'MgO'],
series: [0.73, 0, 0.13]
]
};
我制作了一个JSfiddle,您可以在其中看到数组的输出console.log(tdata);
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
0:
Object
Oxide:
"Ca0"
Proportion:
"0.73"
__proto__:
Object
似乎这些对象以某种方式是多维的,或者发生了一些 jQuery funkiness,因为我还没有设法为 Chartist 提取一维“标签”和“系列”数组。不过,它应该很简单?