我有一个表,每个表行按唯一日期动态分配一个数据日属性。其输出类似于以下内容:
<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="1">
<td>Thu 22/08/13 00:00</td>
<td>value 3</td>
</tr>
<tr data-day="2">
<td>Mon 14/01/15 00:00</td>
<td>value 2</td>
</tr>
<tr data-day="3">
<td>Tues 15/01/15 00:00</td>
<td>value 3</td>
</tr>
</table>
根据之前的回答,我使用以下内容为每个具有相关值的唯一数据类型获取数组:
var allAvailableOptions = ["value 1","value 2","value 3"];
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() );
});
基于我迄今为止所取得的成就,我想要实现的目标如下:
根据到目前为止的回复,我做了编辑并使用了toString(),这似乎有效:
$.each(dataAttributes, function (i, v) {
var thisArray = this.toString();
if(thisArray == allAvailableOptions){
alert("match")
}
else
{
alert("no match")
}
});
虽然这可能不是一个很好的方法(我确定有人会指出原因)它似乎完全符合预期,所以我对这种方法很满意:
http://jsfiddle.net/zqbn983d/8/
现在我需要确定的是如何确保我的数组没有任何副本,只有在价值不存在时才推送。
非常感谢能提供的任何帮助
干杯
答案 0 :(得分:1)
不,数组上的等号不起作用,你试图比较对象,在这种情况下是不同的数组对象。
你应该检查内容。请参阅this answer以获得明智的实施。
另外,在这种情况下,您使用
var $this = $(this);
完全是多余的,因为它从未被引用过。