2011-04-14 15 views
6

मेरे पास एक सरणी है जिसे मैंने jQuery में एक साथ रखा है और मैं सोच रहा हूं कि कोई तरीका है कि मुझे किसी दिए गए शब्द की घटनाओं की संख्या मिल सकती है। अगर मैंने स्ट्रिंग बनाने की कोशिश की तो क्या मेरे पास बेहतर परिणाम होंगे?क्या jQuery सरणी में घटनाओं की संख्या को गिनने का कोई तरीका है?

उत्तर

34

आप इस तरह एक सरणी है:

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 
+0

उह, चमकदार। मुझे इसका ध्यान रखना होगा। '$ .grep()' बहुत कुछ का उपयोग करने के लिए कभी नहीं मिला। +1 –

+1

+1 'grep()' उपयोगिता का अच्छा उपयोग। – alex

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() के साथ विधि अधिक पठनीय है और कम रेखाएं हों, लेकिन यह देशी जावास्क्रिप्ट में एक छोटे से अधिक लाइनों के साथ अधिक performant लगता है:

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 

जे एस प्रदर्शन यहां उपलब्ध हैं: 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; 
संबंधित मुद्दे

 संबंधित मुद्दे