0

在我的代码中,我需要找到重复的值并使用 jQuery 发出警报。下面是示例数组和我的要求。请帮忙。

            a1 = {1,2,3,4,5,6,4}
            a2= {9,8,7},
            a3= {a,b,c,d,e,7}

在上面的数组中,我需要获取值 4 并发出警报,因为它在数组“a1”中重复,我需要获取值 7,因为它在数组“a2”和“a3”中重复。
我修复的第一个问题如下。需要修复第二个。

        for (var $i = 0; $i<= $last; $i++)
        {
        var hours = [];
        var minutes = [];
        var activeTime = [];    
        $.each($('.hour'+$i),function() {
       hours.push($(this).val());    
         });
       $.each($('.hour'+$i).next('select'),function(){
        minutes.push($(this).val());
       });
       for ( var i = 0; i < hours.length; i++ ) {
          activeTime.push(hours[ i ]+":"+minutes[ i ]+":"+"00");
         }
         for ( var i = 0; i <= hours.length; i++ ) {
          if ( hours[ i ] === "" )
           {
          $("#timeValidate"+$i).css("display", "block");
           return false;
           }
            else
             {
            $("#timeValidate"+$i).css("display", "none");
            }
            }
          for(var i=0; i< activeTime.length; i++)
          {
           for(var j = 0; j< activeTime.length; j++)
           {
          if( i != j)
             {
           if(activeTime[j] == activeTime[i])
              {
            $("#timeValidate"+$i).text("");
            $("#timeValidate"+$i).text("active time"+activeTime[j]+" is repeating");
             $("#timeValidate"+$i).css("display", "block");
            return false;
            }
            }
             }
            }
           }
4

3 回答 3

1
function getDuplicatesFromArrays() {
    var allItems = Array.prototype.concat.apply([], arguments);
    var duplicates = [];
    var hash = {};

    allItems.forEach(function(x) {
        if(hash.hasOwnProperty(x)) duplicates.push(x);
        hash[x] = 1;
    });

    return duplicates;
}

上面的函数接受任意数量的数组,并产生副本:

getDuplicatesFromArrays(a1,a2,a3) // [4, 7]

演示

它作为一种反向哈希筛工作;仅当项目已经在哈希中时才添加到重复项。

于 2012-11-27T09:37:56.070 回答
0

干得好:

var original = [].concat(a,b,c),
    dupes = [];
for (var c = 0; c < original.length; c++) {
    if (original.filter(function(v) {
        return v == original[c];
    }).length > 1) {
        dupes.push(original[c]);
    }
}
alert($.grep(dupes, function(v, k){return $.inArray(v , dupes) === k;}));

这是一个演示:http: //jsfiddle.net/q2c42/

于 2012-11-27T09:36:56.933 回答
0

试试sugar.js,它具有用于数组(和其他)的高级功能。例如,您可以使用 unique() 和 subtract() 的组合来获取仅包含重复元素的数组。然后你可以解析它并为每一个发出警报。

于 2012-11-27T09:38:09.023 回答