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

时间:2011-04-14 04:28:57

标签: jquery

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

4 个答案:

答案 0 :(得分:37)

如果您有这样的数组:

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

答案 1 :(得分:3)

你可能会这样做 -

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++;
     }
});

答案 2 :(得分:2)

使用$ .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

答案 3 :(得分:1)

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;