নিম্নলিখিত বাইনারি অ্যারে (অ্যারে 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 ]