The method with $ .grep () is more readable and contains fewer lines, but it seems more perfect with a bit more lines in native 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 metrics are available here: http://jsperf.com/counting-occurrences-of-a-specific-value-in-an-array