নতুন অ্যারে মেথড flat() এবং flatMap(): জাভাস্ক্রিপ্ট

জাভাস্ক্রিপ্ট এ নতুন দুইটি অ্যারে মেথডের সাথে পরিচয় করিয়ে দেওয়া হয়েছে। এদের মূল কাজ হচ্ছে মাল্টি-ডাইমেনশনলাম অ্যারেকে ফ্লাট করা বা অন্য কথায় অ্যারের ভিতরে অ্যারে থাকলে সেগুলোকে একটা অ্যারেতে কনভার্ট করে ফেলা। দুইটা মেথডই এখনো ডেভেলপমেন্ট পর্যায়ে আছে। তবে ক্রোমে ৬৯, মজিলা ফায়ারফক্স ৬২ এবং অপেরা ৫৬ এ এখনই পাবেন এই মেথডগুলো। যেহেতু এখনো সব জায়গায় সাপোর্ট করে না, তা ব্যবহার না করাই ভালো। জাস্ট জানার জন্যে দেখতে পারেন।
flat(): এই মেথড যেহেতু অ্যারের মেথড, তাই এটা অ্যারের উপর অ্যাপ্লাই করা যাবে। এটা একটা আর্গুমেন্টও নেয় যে আপনি কতটুকু গভীর পর্যন্ত অ্যারেটাকে ফ্ল্যাট করতে চাচ্ছেন। আর আর্গুমেন্ট এটা অপশনাল, না দিলে বাই ডিফল্ট একটা অ্যারে পর্যন্ত ফ্ল্যাট করবে। যেমন ধরি আমাদের এরকম একটা অ্যারে আছেঃ
const arr = ['a', ['b', 'c', ['d', 'e']]]এখন এটাতে আমরা flat() যদি ইউজ করি কোনো আর্গুমেন্ট ছাড়াঃ
arr.flat()এবার এইটা আপনার সাপোর্টেড ব্রাউজারের কন্সোলে রান করালে এরকম আউটপুট পাবেনঃ

খেয়াল করে দেখবেন ভিতরে আরেকটা অ্যারে রয়ে গেছে, কারণ আমরা কোনো আর্গুমেন্ট দেই নাই, তাই বাই ডিফল্ট একটা মাত্র অ্যারেকে ফ্ল্যাট করেছে। এখন এখানে ভিতরে যেহেতু এরকম দুই লেভেল ডিপ অ্যারে আছে, তাই আমরা আর্গুমেন্ট দিয়ে সবগুলোকে ফ্ল্যাট করে দিতে পারিঃ
arr.flat(2)এটা রান করালেঃ

একদম ফ্ল্যাট!
এই মেথড ইউজ করে অ্যারেতে কোনো খালি স্লট থাকলে সেটাকেও রিমুভ করা যায়ঃ
['a', 'b', 'c', , , 'd', 'e'].flat()
flatMap(): এটাও আরেকটা অ্যারের মেথড তবে আরো বেশি কাজের। এটা আগের flat() এর মতোই কাজ করবে। তবে এক্ষেত্রে এটা মাত্র এক লেভেলের অ্যারে পর্যন্ত ফ্ল্যাট করবে। আর এটা ফাংশানাল প্রোগ্রামিং এর কনসেপ্ট ইউজ করেছে। আগের প্রথম অ্যারেটা যদি এটা দিয়ে ফ্ল্যাট করতে চাইঃ
arr.flatMap(one => one)এটা এক লেভেল পর্যন্তই ফ্ল্যাট করবেঃ

তো এটার ইউজ কেস কি তাইলে? এটা তো আগেরটার চাইলেও কম ফাংশানাল মনে হচ্ছে। হ্যাঁ এবার আমরা এটার ইউজ কেসটাই দেখবো। ধরি আমাদের নিচে এরকম আরেকটা স্ট্রিং আছেঃ
const arrOfStr = ['My name is', 'Zonayed Ahmed', 'Zonayed']এখন আমরা চাচ্ছি যে এখানের সবগুলো স্ট্রিং থেকে ওয়ার্ডগুলো আলাদা করে সম্পূর্ণ নতুন আরেকটা অ্যারে হবে। এটা এভাবে করা যেতে পারেঃ
arrOfStr.map(oneStr => oneStr.split(' '))কিন্তু এখানে সমস্যা আছে, আগের অ্যারের প্রত্যেকটা আইটেম স্প্লিট হয়েছে ঠিকি কিন্তু সবাই নিজে নিজে আরেকটা অ্যারের ভিতরে ঢুকে গেছেঃ

এখন এটা আরো অনেকভাবে সমাধান করা যেতে পারে কিন্তু এখানেই flatMap() এর খেলা। এটা map() এর পরবর্তিতে ইউজ করলে সবগুলো ওয়ার্ড একটা অ্যারেতেই রিটার্ণ করবেঃ
arrOfStr.flatMap(oneStr => oneStr.split(' '))ব্যাস! কাজ শেষঃ

আজকে এই পর্যন্তই। এই দুই মেথড এখনো প্রোডাকশন লেভেলের জন্যে উপযোগী নয়, তাই কোথাও ইউজ না করাই ভালো আপাতত। তবে ভবিষ্যতে সব এনভারোমেন্টে অ্যাড হয়ে গেলে নিশ্চিন্তে ইউজ করা যাবে।

