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