कम से कम चार तरीके हैं। सबसे अच्छा विकल्प, जो मूल RegEx इंजन के लिए सबसे तेज़-भी होना चाहिए -, शीर्ष पर रखा गया है। jsperf.com वर्तमान में नीचे है, अन्यथा मैं आपको प्रदर्शन आंकड़े प्रदान करता हूं।
अपडेट : कृपया, यहां प्रदर्शन परीक्षण खोजें, और उन्हें अपने आप चलाएं, ताकि आपके प्रदर्शन परिणामों का योगदान हो सके। परिणामों की बारीकियों को बाद में दिया जाएगा।
1।
("this is foo bar".match(/o/g)||[]).length
//>2
2।
"this is foo bar".split("o").length-1
//>2
विभाजित नहीं की सिफारिश की। संसाधन भूखा है। प्रत्येक मैच के लिए 'ऐरे' के नए उदाहरण आवंटित करता है। FileReader के माध्यम से> 100MB फ़ाइल के लिए प्रयास न करें। आप वास्तव में Chrome के प्रोफाइलर विकल्प का उपयोग करके EXACT संसाधन उपयोग को आसानी से देख सकते हैं ।
3।
var stringsearch = "o"
,str = "this is foo bar";
for(var count=-1,index=-2; index != -1; count++,index=str.indexOf(stringsearch,index+1) );
//>count:2
4।
एक एकल चरित्र के लिए खोज
var stringsearch = "o"
,str = "this is foo bar";
for(var i=count=0; i<str.length; count+=+(stringsearch===str[i++]));
//>count:2
अपडेट करें:
5।
तत्व मानचित्रण और फ़िल्टरिंग, पायथोनियन 'जनरेटर' का उपयोग करने के बजाय इसके समग्र संसाधन प्रचार के कारण अनुशंसित नहीं है
var str = "this is foo bar"
str.split('').map( function(e,i){ if(e === 'o') return i;} )
.filter(Boolean)
//>[9, 10]
[9, 10].length
//>2
शेयर:
मैं इस बनाया सार तो हम सीधे पूल और हमारे विचारों को साझा कर सकते हैं, चरित्र गिनती की वर्तमान में 8 तरीकों के साथ, - सिर्फ मनोरंजन के लिए है, और शायद कुछ रोचक मानक :)
https://gist.github.com/2757250