কমপক্ষে চারটি উপায় রয়েছে। সর্বোত্তম বিকল্প, যা দেশীয় 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 এর প্রোফাইলার বিকল্পটি ব্যবহার করে খুব সহজেই উত্সের ব্যবহার পর্যবেক্ষণ করতে পারেন ।
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