我有以下代码,它根据应用于表格行的数据类型将表格单元格的值转换为数组:
$("#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() );
});
是否可以修改此代码以便仅存储唯一值?我更倾向于调整上述内容而不是考虑替代解决方案或其他库,因为这可能需要重新编写已经正常运行的代码。
我有一个很好的scoot轮,但我找不到任何使用上述解决方案的东西。
感谢您提供给我的任何建议。
答案 0 :(得分:1)
首先,变量和换行符将使您的代码更具可读性:
$("#pricehistory tr").each(function (index, el) {
var day = $(el).data('day');
var value = $(el).find('td:last').text();
if ( ! (day in dataAttributes) )
dataAttributes[day] = [];
dataAttributes[day].push( value );
});
现在您可以使用indexOf
检查是否尚未插入值:
$("#pricehistory tr").each(function (index, el) {
var day = $(el).data('day');
var value = $(el).find('td:last').text();
if ( ! (day in dataAttributes) )
dataAttributes[day] = [];
if ( dataAttributes[day].indexOf(value) < 0 ) //< 0 means not found
dataAttributes[day].push( value );
});
(如果你想要IE8兼容性,你可以使用polyfill)