2011-04-14 9 views

Respuesta

34

Si tiene una matriz de esta manera:

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

y establecer su valor objetivo:

var target = 1; 

entonces usted puede encontrar el número de ocurrencias de target usando:

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

ooh, brillante. Tengo que tomar nota de esto. Nunca llegué a usar '$ .grep()' mucho. +1 –

+1

+1 Buen uso de la utilidad 'grep()'. – alex

3

Probablemente pueda hacer así -

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

Método con $ .grep() es más fácil de leer y contiene menos líneas pero parece más performante con un poco más líneas en Javascript orígenes:

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 

actuaciones Js están disponibles aquí: 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; 

O

var itemsFound = $.grep(x, function (elem) { 
           return elem == item; 
          }).length; 
Cuestiones relacionadas