2016-04-20 74 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 –