নিম্নলিখিত বাইনারি অ্যারে (অ্যারে A) -
বিবেচনা করুনconst arr = [1,0,1,1,1,1,0,1,1];
যখন এই অ্যারেটি ফাংশনের মধ্য দিয়ে যায়, তখন বলুন sumRight(), এটি নিম্নলিখিত আউটপুট অ্যারে (অ্যারে B) −
তৈরি করেconst output = [1,0,4,3,2,1,0,2,1];
ফাংশন বোঝা
অ্যারে অ্যারের উপাদানগুলি 0 বা 1 হতে পারে৷ ফাংশনটি অ্যারে অ্যারের শেষ উপাদান থেকে পিছনের দিকে গণনা করে, যদি অ্যারে অ্যারেতে পরপর 1 থাকে তবে আউটপুট অ্যারেতে সংশ্লিষ্ট উপাদানটি 1 হবে তবে অ্যারে অ্যারে 2য় পরপর 1টির জন্য , এটি হবে 2। 3য় একটি ইনপুট অ্যারের জন্য আউটপুট অ্যারের উপাদানটি 3 হবে, কিন্তু অ্যারে অ্যারে 0-এর জন্য এটি আউটপুট অ্যারেতেও 0 হবে।
তাহলে আসুন Array.prototype.reduceRight() পদ্ধতি ব্যবহার করে এই ফাংশনের জন্য কোড লিখি, যা সাধারণ হ্রাস পদ্ধতির মতো একই কাজ করে, এটি বাম দিকের পরিবর্তে ডান থেকে শুরু হয় −
উদাহরণ
const arr = [1,0,1,1,1,1,0,1,1]; const sumRight = arr => { return arr.reduceRight((acc, val) => { const { prev, res } = acc; if(val === 0){ return { prev: 0, res: res.concat(0) }; }; return { res: res.concat(val+prev), prev: prev+1 }; }, { prev: 0, res: [] }).res.reverse(); }; console.log(sumRight(arr));
আউটপুট
কনসোলে আউটপুট হবে −
[ 1, 0, 4, 3, 2, 1, 0, 2, 1 ]