获得唯一的元素计数jquery

get unique elements count jquery

本文关键字:jquery 元素 唯一      更新时间:2023-09-26

我有以下HTML

<input type="hidden" name="product_id" value = "1" class="product_id" />
<input type="hidden" name="product_id" value = "2" class="product_id" />
<input type="hidden" name="product_id" value = "5" class="product_id" />
<input type="hidden" name="product_id" value = "1" class="product_id" />
<input type="hidden" name="product_id" value = "2" class="product_id" />
<input type="hidden" name="product_id" value = "2" class="product_id" />

如何获得Unique元素的count(元素的唯一值)

可能是without looping吗?

预期结果:

UNIQUE ID  COUNT
-----------------
  1          2  
  2          3
  5          1

我所尝试的是下面的东西,但这个问题方法是循环所有元素。正如你所看到的第一次迭代我们可以理解1product_id的计数,所以它需要跳过任何具有相同product_id的其他元素。我有一堆元素,我不喜欢循环所有的元素。

$(".product_id").each( function(){
  //CHECK THE COUNT AND SAVE IT TO SOME ARRAY
});
更新:

可以不赞成,但是如果你发表评论的话会很有帮助因为那张反对票。我特别说明了without循环,因为它尽管有时使用jQuery强大的CSS是可能的选择器。

可以使用对象作为键->计数对来累积值,但如果不循环遍历元素(无论是使用显式循环还是使用辅助函数,如.each:

),则无法完成此操作。
var count = {};
$('.product_id').each(function() {
    count[this.value] = count[this.value] + 1 || 1;
});

然后必须再次循环以遍历已计数的值。

虽然可以使用jQuery选择器来计算匹配相同值的所有元素,但它实际上比迭代每个元素要低得多。这里给出的代码是O(n)但另一种算法(查找每个新的唯一值然后计算它出现的次数)大约是O(n^2)

用你想计数的值获取所有输入的长度

$("input[value='1']").length;

只有当我们知道

的值时才有效