2016-04-20 76 views
0

我知道以前有類似的問題,但我試過每個答案,但沒有爲我工作。我在buttons的的每次點擊上創建我的array。所以它看起來像這樣:從元素可能不同的數組中刪除重複的元素

<button type="button" name="10208823390691752,1317727711586522" value="All contacts" class="btn btn-default ognjen">All contacts</button> 
<button type="button" name="10207252567926988,1294280923934896" value="Men" class="btn btn-default ognjen">Men</button> 
<button type="button" name="10208823390691752,10207252567926988" value="Women" class="btn btn-default ognjen">Women</button> 
<button type="button" name="1317727711586522,1294280923934896" value="Segment 1" class="btn btn-default ognjen">Segment 1</button> 

所以這是我設法使一個陣列,所有的值點擊要素:

$(document).ready(function() { 

     var clickedButtons = new Array(); 
     var numUsers= new Array(); 
     $('button.ognjen').click(function() { 

      var index = clickedButtons.indexOf(this.value); 

      if (index === -1){ 
       clickedButtons.push(this.value); 
       numUsers.push(this.name);//value not found so push it 
       }else { 
       clickedButtons.splice(index, 1); 
       numUsers.splice(this.name);// value found so remove it 
      } 
      var tryIt=numUsers.join(); 
      var picker=tryIt.split(', '); 
      console.log(picker); 
}); 

所以picker現在是一個數組,可能看起來像這樣,後點擊某些按鈕:

["10207252567926988,1294280923934896,10208823390691752,1317727711586522,1294280923934896"] 

現在,我想刪除此數組中的所有重複元素。從這些問題的答案嘗試:

而且沒有一次成功。我認爲這可能是由於動態製作這個piker陣列。請幫忙,我一整天都在爲這個問題苦苦掙扎。

+0

'numUsers.splice(this.name)每次重新創建陣列;'應'numUsers.splice(index,1);' –

+5

這是一個只有1個元素的數組(一個有很多數字的字符串),所以刪除重複項將會很困難,因爲沒有任何。 – Craicerjack

+0

沒有按鈕名稱 –

回答

1

我認爲一個更簡單的方法將被存儲每個按鈕的點擊狀態然後像

$(document).ready(function() { 
 

 
    var clickedButtons = new Array(); 
 
    var numUsers = new Array(); 
 
    var $btns = $('button.ognjen').click(function() { 
 
    $(this).toggleClass('selected'); 
 

 
    clickedButtons = new Array(); 
 
    $btns.filter('.selected').each(function() { 
 
     var values = this.value.split(','); 
 
     values.forEach(function(value) { 
 
     var index = clickedButtons.indexOf(value); 
 
     if (index === -1) { 
 
      clickedButtons.push(value); 
 
     } 
 
     }); 
 
    }); 
 

 
    console.log(clickedButtons) 
 
    snippet.log(clickedButtons.join() || 'NONE'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 
 
<button type="button" value="10208823390691752,1317727711586522" class="btn btn-default ognjen">All contacts</button> 
 
<button type="button" value="10207252567926988,1294280923934896" class="btn btn-default ognjen">Men</button> 
 
<button type="button" value="10208823390691752,10207252567926988" class="btn btn-default ognjen">Women</button> 
 
<button type="button" value="1317727711586522,1294280923934896" class="btn btn-default ognjen">Segment So

+0

你有任何鏈接到這個snippet.js文件的文檔?我只是想以更好地理解你是如何實現這一目標的。 – Ognj3n

+0

@ Ognj3n它是由TJ編寫的一個小型實用程序http://meta.stackexchange.com/a/242144/134069 –