আসুন কল্পনা করুন যে আমাদের কাছে এর মতো পূর্ণসংখ্যার অ্যারে রয়েছে:
var values = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
নীচের সূত্রের সাথে গড় প্রাপ্ত হয়
এ = (১ / এন) ixi (আই = 1 থেকে এন সহ) ... সুতরাং: এক্স 1 / এন + এক্স 2 / এন + ... + এক্সএন / এন
আমরা মানটির সংখ্যার দ্বারা বর্তমান মানকে বিভক্ত করি এবং পূর্ববর্তী ফলাফলকে প্রত্যাবর্তিত মানের সাথে যুক্ত করি।
হ্রাস পদ্ধতি স্বাক্ষর হয়
reduce(callback[,default_previous_value])
হ্রাস কলব্যাক ফাংশন নিম্নলিখিত পরামিতি লাগে:
- পি : পূর্ববর্তী গণনার ফলাফল
- সি : বর্তমান মান (বর্তমান সূচী থেকে)
- i : বর্তমান অ্যারে এলিমেন্টের সূচক মান
- একটি : বর্তমান হ্রাস অ্যারে
দ্বিতীয় হ্রাসের প্যারামিটারটি হ'ল ডিফল্ট মান ... (অ্যারেটি খালি থাকলে ব্যবহৃত হয় )।
সুতরাং গড় হ্রাস পদ্ধতিটি হ'ল:
var avg = values.reduce(function(p,c,i,a){return p + (c/a.length)},0);
আপনি যদি পছন্দ করেন তবে আপনি একটি পৃথক ফাংশন তৈরি করতে পারেন
function average(p,c,i,a){return p + (c/a.length)};
function sum(p,c){return p + c)};
এবং তারপরে কেবল কলব্যাক পদ্ধতির স্বাক্ষরটি উল্লেখ করুন
var avg = values.reduce(average,0);
var sum= values.reduce(sum,0);
বা সরাসরি অ্যারে প্রোটোটাইপ অগমেন্ট করুন ..
Array.prototype.sum = Array.prototype.sum || function (){
return this.reduce(function(p,c){return p+c},0);
};
প্রতিবার হ্রাস পদ্ধতিটি বলা হলে মানটিকে ভাগ করা সম্ভব হয় ..
Array.prototype.avg = Array.prototype.avg || function () {
return this.reduce(function(p,c,i,a){return p+(c/a.length)},0);
};
বা আরও ভাল , পূর্বনির্ধারিত অ্যারে.প্রোটাইপ.সাম () ব্যবহার করে
পদ্ধতিটি, প্রক্রিয়াটি কেবলমাত্র একবার আমার বিভাগটি কল করার জন্য অনুকূল করুন :)
Array.prototype.avg = Array.prototype.avg || function () {
return this.sum()/this.length;
};
তারপরে সুযোগের কোনও অ্যারে অবজেক্টে:
[2, 6].avg();// -> 4
[2, 6].sum();// -> 8
এনবি: রিটার্ন সহ একটি খালি অ্যারে আমার দৃষ্টিকোণে 0 এর চেয়ে বেশি সঠিক এবং নির্দিষ্ট ব্যবহারের ক্ষেত্রে কার্যকর হতে পারে।
var elmt = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
অনেক ভাল হবে।