有没有办法计算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;