jquery唯一的数组值

时间:2014-08-31 16:48:13

标签: jquery arrays

我有以下代码,它根据应用于表格行的数据类型将表格单元格的值转换为数组:

 $("#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轮,但我找不到任何使用上述解决方案的东西。

感谢您提供给我的任何建议。

1 个答案:

答案 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