将所有重复项分组为新数组中的单个值

时间:2017-06-01 15:28:39

标签: jquery

我试图仅从用户输入中找到重复项并将其分组到具有重复项的单个值的新数组中。

例如:[1,2,3,3,3,4,4,5,5]至[3,4,5]

现在它将duplicates = 2分组,但我需要它将所有重复项分组> 1。

这是我到目前为止所做的。



$('#group').on('click', function() {
  var addFieldsArray = $('.add').map(function() {
    return $(this).val();
  }).get();
  var groupSimiliar = addFieldsArray.sort();

  var groupDuplicates = []
  for (var i = 0; i < groupSimiliar.length - 1; i++) {
    if (groupSimiliar[i + 1] == groupSimiliar[i]) {
      groupDuplicates.push(groupSimiliar[i]);
    }
  }
  console.log(groupDuplicates);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="add" id="one">
<input type="text" class="add" id="two">
<input type="text" class="add" id="three">
<input type="text" class="add" id="four">
<br/>
<input type="text" class="add" id="five">
<input type="text" class="add" id="six">
<input type="text" class="add" id="seven">
<input type="text" class="add" id="eight">
<br/>
<button id="group">Group</button>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

使用对象的键而不是数组来保存重复项,因为对象不能有重复的键。

$('#group').on('click', function() {
  var addFieldsArray = $('.add').map(function() {
    return $(this).val();
  }).get();
  var groupSimiliar = addFieldsArray.sort();

  var groupDuplicates = {}
  for (var i = 0; i < groupSimiliar.length - 1; i++) {
    if (groupSimiliar[i + 1] == groupSimiliar[i]) {
      groupDuplicates[groupSimiliar[i]] = true;
    }
  }
  console.log(Object.keys(groupDuplicates));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="add" id="one">
<input type="text" class="add" id="two">
<input type="text" class="add" id="three">
<input type="text" class="add" id="four">
<br/>
<input type="text" class="add" id="five">
<input type="text" class="add" id="six">
<input type="text" class="add" id="seven">
<input type="text" class="add" id="eight">
<br/>
<button id="group">Group</button>

答案 1 :(得分:0)

您可以在最终阵列上使用jQuery.unique(),例如(在您的代码中),在这样记录时使用它:

console.log($.unique(groupDuplicates));

或者在使用之前创建一个新变量:

var uniqueGroupDuplicates = $.unique(groupDuplicates);
console.log(uniqueGroupDuplicates);

检查代码段:

$('#group').on('click', function() {
  var addFieldsArray = $('.add').map(function() {
    return $(this).val();
  }).get();
  var groupSimiliar = addFieldsArray.sort();

  var groupDuplicates = []
  for (var i = 0; i < groupSimiliar.length - 1; i++) {
    if (groupSimiliar[i + 1] == groupSimiliar[i]) {
      groupDuplicates.push(groupSimiliar[i]);
    }
  }
  console.log($.unique(groupDuplicates));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="add" id="one">
<input type="text" class="add" id="two">
<input type="text" class="add" id="three">
<input type="text" class="add" id="four">
<br/>
<input type="text" class="add" id="five">
<input type="text" class="add" id="six">
<input type="text" class="add" id="seven">
<input type="text" class="add" id="eight">
<br/>
<button id="group">Group</button>