2012-11-27 38 views
0

在我的代碼中,我需要找到重複的值並使用jQuery發出警報。以下是示例數組和我的要求。請幫忙。如何使用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; 
      } 
      } 
      } 
      } 
      } 
+3

那些看起來不像數組,實際上這是無效的語法。 – elclanrs

+2

[你有什麼嘗試?](http://whathaveyoutried.com) – tjameson

+0

這只是一個例子,不是確切的代碼 – Mansoor

回答

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/

+0

感謝您的重播。我會試試這個 – Mansoor

+0

會有n次數組,然後我們將如何嘗試這個 – Mansoor

+0

@Mansoor更新並提供了一個例子。同時只提醒一次模糊。 –

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] 

Demo

它可以作爲一種逆散列篩子;僅當項目已經在散列中時才添加到重複項。

+0

謝謝你repaly – Mansoor

+0

如何使用循環調用帶'n'數組的數組函數 – Mansoor

+0

@Mansoor:函數接受任意數量的數組'getDuplicatesFromArrays(a,b,c,d,e,f,g,h ,i,j,k)'會很好,如果這些都是數組。 –

0

嘗試sugar.js,它具有數組(和其他)的高級功能。例如,您可以使用unique()和subtract()的組合來獲取僅包含重複元素的數組。然後你可以解析它併爲每一個提醒。

+0

感謝您的重播。我會試試這個 – Mansoor