我有一个包含日期和值的HTML表格。该表是在加载时生成的数据库,因此既可以是唯一日期的数量,也可以是唯一数据日数"属性值是动态的。
<table id="pricehistory">
<tr data-day="1">
<td>Thu 22/08/13 00:00</td>
<td>value 1</td>
</tr>
<tr data-day="1">
<td>Thu 22/08/13 00:00</td>
<td>value 2</td>
</tr>
<tr data-day="2">
<td>Sun 13/01/15 00:00</td>
<td>value 1</td>
</tr>
<tr data-day="3">
<td>Mon 14/01/15 00:00</td>
<td>value 1</td>
</tr>
<tr data-day="3">
<td>Mon 14/01/15 00:00</td>
<td>value 2</td>
</tr>
<tr data-day="3">
<td>Mon 14/01/15 00:00</td>
<td>value 3</td>
</tr>
</table>
我已经有一个数组用于每个唯一的数据日值。
var dataAttributes = {};
$("#pricehistory tbody tr").each(function () {
dataAttributes[$(this).attr('data-day')] = true;
});
var uniqueDataAttributes = new Array();
for(var i in dataAttributes)
{
uniqueDataAttributes.push(i);
}
$.each(uniqueDataAttributes, function (i, v) {
alert(v);
});
我想要实现的是为每个独特的&#34;数据日&#34;获取一系列值。值,所以在上面的例子中的内容如下:
dd1 ["value 1","value2"]
dd2 ["value 1"]
dd3 ["value 1","value 2","value3"]
这背后的想法是我已经知道所有可能的值是什么,所以每天得到每个值的数组我可以将它与&#34; allValues&#34;阵列。
有人可以帮我解决这个问题吗?
Adeneo提供了以下答案,这个答案很棒且完美无缺......
var dataAttributes = {};
$("#pricehistory tr").each(function (index, el) {
if ( ! ($(el).data('day') in dataAttributes) ) dataAttributes[$(el).data('day')] = [];
dataAttributes[$(el).data('day')].push( $(el).find('td:last').text() );
});
...但是我在原帖(我的道歉)中应该提到的是,我只想在每个数组中存储唯一值。
非常感谢
答案 0 :(得分:0)
稍微改变一下
var dataAttributes = {};
$("#pricehistory tr").each(function (index, el) {
if ( ! ($(el).data('day') in dataAttributes) ) dataAttributes[$(el).data('day')] = [];
dataAttributes[$(el).data('day')].push( $(el).find('td:last').text() );
});
你最终得到了
{
"1": [
"value 1",
"value 2"
],
"2": [
"value 1"
],
"3": [
"value 1",
"value 2",
"value 3"
]
}
答案 1 :(得分:0)
如果我理解正确,以下代码将对您有用。
var dataAttributes = {};
$("#pricehistory tbody tr").each(function () {
var $elem = $(this);
var dd = $elem.attr('data-day');
// Initializing the unique dd if not already initialized
dataAttributes[dd] = dataAttributes[dd] || [];
// Push the new value to the unique dd array
dataAttributes[dd].push($elem.find('td:last').text());
});
答案 2 :(得分:0)
我试过像贝洛一样的东西
var object = {dd1:[],dd2:[],dd3:[]}
$.each(uniqueDataAttributes, function (i, v) {
$('tr[data-day="'+v+'"]').each(function(){
object["dd"+v].push($(this).children().eq(1).text());
});
});
console.log(object)
控制台将打印此内容(输出已字符串化)
{"dd1":["value 1","value 2"],"dd2":["value 1"],"dd3":["value 1","value 2","value 3"]}