有没有办法计算jQuery数组中出现的次数?

我有一个数组,我在jQuery中放在一起,我想知道是否有一种方法可以找到给定术语的出现次数。 如果我尝试创建一个字符串,我会得到更好的结果吗?

如果你有这样的数组:

var arr = [1, 2, 3, 4, 3, 2, 1]; 

并设置目标值:

 var target = 1; 

然后你可以使用以下方法找到target的出现次数:

 var numOccurences = $.grep(arr, function (elem) { return elem === target; }).length; // Returns 2 

你可以这样做 –

 var myArray = ['a','fgh','dde','a3e','rra','ab','a']; var occurance = 0; var lookupVal = 'a'; $(myArray).each(function (index, value) { if(value.indexOf(lookupVal)!= -1) { occurance++; } }); 

使用$ .grep()的方法更具可读性,并且包含更少的行,但在本机javascript中使用更多的行似乎更高效:

 var myArray = ["youpi", "bla", "bli", "blou", "blou", "bla", "bli", "you", "pi", "youpi", "yep", "yeah", "bla", "bla", "bli", "you", "pi", "youpi", "yep", "yeah", "bla", "bla", "bli", "you", "pi", "youpi", "yep", "yeah", "bla", "bla", "bli", "you", "pi", "youpi", "yep", "yeah", "bla"]; // method 1 var nbOcc = 0; for (var i = 0; i < myArray.length; i++) { if (myArray[i] == "bla") { nbOcc++; } } console.log(nbOcc); // returns 9 // method 2 var nbOcc = $.grep(myArray, function(elem) { return elem == "bla"; }).length; console.log(nbOcc); // returns 9 

这里有Js表演: http : //jsperf.com/counting-occurrences-of-a-specific-value-in-an-array

 var x = [1,2,3,4,5,4,4,6,7]; var item = 4; var itemsFound = x.filter(function(elem){ return elem == item; }).length; 

要么

 var itemsFound = $.grep(x, function (elem) { return elem == item; }).length;