2011-04-14 71 views

回答

34

如果你有一个这样的数组:

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

并设定目标值:

var target = 1; 

然后你就可以用找到的target OCCURENCES数量:

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

哦,有光泽。我必须注意到这一点。从未尝试过使用'$ .grep()'。 +1 – 2011-04-14 04:34:50

+1

+1很好的使用'grep()'工具。 – alex 2011-04-14 04:35:16

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

与$ .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

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; 
相关问题