জাভাস্ক্রিপ্ট/অ্যারে
জাভাস্ক্রিপ্টে, অ্যারে হলো এমন একটি অবজেক্ট যেখানে আপনি একটি একক চলক নামের অধীনে মান বা ভ্যালুর একটি সেট সংরক্ষণ করতে পারেন। এখন পর্যন্ত, এটি অন্যান্য অনেক প্রোগ্রামিং ভাষার মতোই। তবে এখানে কিছু পার্থক্য রয়েছে।
- অ্যারের সব ভ্যালুকে একই ডেটা টাইপের হতে হবে এমন কোনো বাধ্যবাধকতা নেই। আপনি চাইলে যেকোনো কিছু অ্যারায় রাখতে পারেন এবং ডেটা টাইপ নিয়ে পরে চিন্তা করতে পারেন। (অবশ্যই টাইপড অ্যারে নামে বিশেষ অ্যারেও রয়েছে যেখানে সব ভ্যালু একই ডেটা টাইপের হয়।)
- অ্যারে তৈরি করার সময় এর আকার বা সাইজ ঘোষণা করার প্রয়োজন নেই, তবে আপনি চাইলে তা করতে পারেন। অ্যারে স্বয়ংক্রিয়ভাবে বড় হয়। এটি অ্যারেকে ব্যবহারের জন্য খুব সুবিধাজনক করে তোলে, তবে সংখ্যাসূচক বিশ্লেষণের (numerical analysis) অ্যাপ্লিকেশনের জন্য এটি খুব একটা উপযুক্ত নয়।
- যেহেতু অ্যারেগুলো অবজেক্ট, তাই এদের নিজস্ব মেথড এবং প্রপার্টি রয়েছে যা আপনি প্রয়োজনমতো ব্যবহার করতে পারেন। উদাহরণস্বরূপ,
.lengthপ্রপার্টিটি নির্দেশ করে যে বর্তমানে অ্যারেতে কয়টি উপাদান রয়েছে। আপনি যদি অ্যারেতে আরও উপাদান যোগ করেন, তবে.length-এর মান বেড়ে যাবে। - উপাদান গণনা শুরু হয় ০ থেকে, যার মানে হলো, উদাহরণস্বরূপ, ৫ম উপাদানটি [৪] ইনডেক্স দ্বারা চিহ্নিত হয়।
(পরামর্শ: অ্যারে ব্যবহারের সময়, আপনার সবসময় অ-ঋণাত্মক পূর্ণসংখ্যাসহ ব্র্যাকেট নোটেশন ব্যবহার করা উচিত, যেমন: arr[3] = 42;। প্রযুক্তিগতভাবে, ডট নোটেশন ব্যবহার করাও সম্ভব, কিন্তু এটি—অন্তত নতুনদের ক্ষেত্রে—অপ্রত্যাশিত আচরণের সৃষ্টি করতে পারে।)
অ্যারে তৈরি করা
প্রথমত, সব অবজেক্টের মতোই, অ্যারেরও একটি কনস্ট্রাক্টর রয়েছে।
"use strict";
const arr_1 = new Array(); // খালি অ্যারে
alert(arr_1.length);
const arr_2 = new Array(0, 2, 4); // ৩টি উপাদান
alert(arr_2);
পরবর্তীতে, জাভাস্ক্রিপ্ট সিনট্যাক্স অ্যারে তৈরি বা কাজ করার সময় স্কয়ার ব্র্যাকেট ব্যবহারের সুবিধা দেয়।
"use strict";
const arr_1 = []; // খালি অ্যারে
alert(arr_1.length);
const arr_2 = [0, 2, 4]; // ৩টি উপাদান
alert(arr_2);
অ্যারে ঘোষণা করার সময় আপনি এর আকার আগে থেকেই নির্ধারণ করে দিতে পারেন।
"use strict";
const arr_3 = new Array(50); // ৫০টি উপাদান
alert(arr_3.length);
অ্যারের উপাদান অ্যাক্সেস করা
অ্যারের উপাদানগুলো পড়া বা লেখার জন্য সাধারণ ব্র্যাকেট নোটেশন ব্যবহার করা হয়।
"use strict";
const arr_4 = [0, 2, 4, 6, 8];
alert(arr_4[3]); // ৬
arr_4[0] = 9;
alert(arr_4); // ৯, ২, ৪, ৬, ৮
আপনি যদি অ্যারের বর্তমান দৈর্ঘ্যের বাইরে কোনো উপাদান অ্যাক্সেস করেন, তবে অ্যারের আকার বৃদ্ধি পাবে এবং নতুন উপাদানটি তৈরি হবে।
"use strict";
const arr_5 = [0, 2, 4, 6, 8];
arr_5[10] = 9;
alert(arr_5); // ০, ২, ৪, ৬, ৮,,,,,,৯
alert(arr_5.length); // ১১
ভিন্নধর্মী ডেটা টাইপ
আপনি একটি অ্যারের ভেতরে বিভিন্ন ডেটা টাইপের ভ্যালু সংরক্ষণ করতে পারেন।
"use strict";
const arr_6 = [0, "two", 4]; // নম্বর এবং স্ট্রিং
console.log(arr_6); // [০, "two", ৪]
// এমনকি 'অ্যারে' ডেটা টাইপের ভ্যালুও সংরক্ষণ করা যায়
const arr_7 = [10, 11];
arr_7[2] = arr_6; // অ্যারের ভেতর অ্যারে
console.log(arr_7); // [১০, ১১, [০, "two", ৪]]
console.log(arr_7.length); // ৩
নেস্টেড অ্যারে
আগেই দেখানো হয়েছে যে, একটি অ্যারের উপাদান আরেকটি অ্যারে হতে পারে (যা নিজে আবার অ্যারে টাইপের উপাদান ধারণ করতে পারে...)। এটি রানটাইমে বা ইনিশিয়ালাইজেশনের সময় ঘটতে পারে। নিচের স্তরের উপাদানগুলো সরাসরি অ্যাক্সেস করার জন্য, আপনাকে সেই স্তর পর্যন্ত পৌঁছাতে প্রয়োজনীয় সংখ্যক ব্র্যাকেট জোড়া [] ব্যবহার করতে হবে।
"use strict";
const arr_8 = [ [0, 1], [10, 11, 12, 13], [20, 21] ];
console.log(arr_8[2]); // এক স্তর নিচে গেলে নম্বরের অ্যারে পাওয়া যায়: [২০, ২১]
console.log(arr_8[1][1]); // দুই স্তর নিচে গেলে একটি নম্বর পাওয়া যায়: ১১
// অ্যাসাইনমেন্টের ক্ষেত্রেও একই নিয়ম ...
arr_8[2][0] = "twenty";
console.log(arr_8[2]); // ["twenty", ২১]
... এবং একটু জটিল উদাহরণ
"use strict";
const arr_9 = []; // খালি
arr_9[0] = [];
arr_9[0][0] = [];
arr_9[0][0][2] = "Hallo world!";
console.log(arr_9); // [[[undefined, undefined, "Hallo world!"]]]
arr_9[2] = "Third element of first level";
console.log(arr_9);
// [[[undefined, undefined, "Hallo world!"]], undefined, "Third element of first level"]
প্রপার্টি এবং মেথড
length
length হলো প্রতিটি অ্যারের একটি প্রপার্টি (এটি কোনো মেথড নয়)। এটি অ্যারের উপাদানের সংখ্যা নির্দেশ করে।
alert([0, 1, 2].length); // ৩
লক্ষ্য করুন যে অ্যারের ইনডেক্সগুলো ০-ভিত্তিক (zero-based)। তাই অ্যারের দৈর্ঘ্য শেষ ইনডেক্সের চেয়ে বেশি হয়।
concat
concat মেথডটি দুই বা ততোধিক অ্যারের সমন্বয় প্রদান করে। এটি ব্যবহার করতে হলে আপনার আগে সমন্বয় করার মতো দুটি বা তার বেশি অ্যারে থাকতে হবে।
const arr1 = ["a","b","c"];
const arr2 = ["d","e","f"];
এরপর, একটি তৃতীয় অ্যারে তৈরি করুন এবং এর মান arr1.concat(arr2) হিসেবে সেট করুন।
const arr3 = arr1.concat(arr2); // arr3 এখন হলো: ["a", "b", "c", "d", "e", "f"]
লক্ষ্য করুন যে, এই উদাহরণে নতুন arr3 অ্যারেটিতে arr1 এবং arr2 উভয় অ্যারের বিষয়বস্তু রয়েছে।
join এবং split
join মেথডটি একটি সিঙ্গেল স্ট্রিং প্রদান করে যাতে অ্যারের সব উপাদান থাকে—যা একটি নির্দিষ্ট ডিলিমিটার (delimiter) দ্বারা পৃথক করা থাকে। যদি ডিলিমিটার নির্দিষ্ট না করা থাকে, তবে এটি ডিফল্টভাবে কমা (,) হিসেবে সেট হয়।
এছাড়াও একটি split মেথড রয়েছে যা join-এর বিপরীত কাজ করে: এটি একটি স্ট্রিংয়ের ওপর কাজ করে, নির্দিষ্ট ডিলিমিটারের ভিত্তিতে সেটিকে বিভিন্ন উপাদানে বিভক্ত করে এবং সেই উপাদানগুলো ধারণকারী একটি অ্যারে প্রদান করে। (পরামর্শ: split হলো স্ট্রিং ডেটা টাইপের একটি মেথড, অ্যারে-এর নয়।)
join ব্যবহার করতে হলে প্রথমে একটি অ্যারে তৈরি করুন।
const abc = ["a", "b", "c"];
এরপর একটি নতুন চলক তৈরি করুন এবং সেটিকে abc.join()-এ অ্যাসাইন করুন।
const a = abc.join(); // "a,b,c"
আপনি একটি নির্দিষ্ট ডিলিমিটারও ব্যবহার করতে পারেন।
// ডিলিমিটার হিসেবে 'সেমিকোলন' এবং 'স্পেস' ব্যবহার করা হয়েছে
const b = abc.join("; "); // "a; b; c"
স্ট্রিংয়ের split মেথড ব্যবহার করে সেটিকে আবার অ্যারেতে রূপান্তর করুন।
const a2 = a.split(","); // ["a", "b", "c"]
const b2 = b.split("; "); // ["a", "b", "c"]
push
push মেথডটি অ্যারের শেষে এক বা একাধিক উপাদান যোগ করে এবং অ্যারের নতুন দৈর্ঘ্য প্রদান করে।
"use strict";
const arr = [0, 1, 2, 3];
alert(arr); // ০, ১, ২, ৩
const len = arr.push(100);
alert(len); // ৫
alert(arr); // ০, ১, ২, ৩, ১০০
pop
pop মেথডটি অ্যারের শেষ উপাদানটি সরিয়ে দেয় এবং সেই উপাদানটি প্রদান করে।
"use strict";
const arr = [0, 1, 2, 3];
alert(arr); // ০, ১, ২, ৩
const elem = arr.pop();
alert(elem); // ৩
alert(arr); // ০, ১, ২
push এবং pop অ্যারের শেষে কাজ করে; তারা একে অপরের বিপরীত প্রভাব ফেলে।
unshift
unshift মেথডটি অ্যারের শুরুতে এক বা একাধিক নতুন উপাদান যোগ করে এবং অ্যারের নতুন দৈর্ঘ্য প্রদান করে। এটি প্রতিটি পুরোনো উপাদানকে তার পুরোনো ইনডেক্স থেকে -এ সরিয়ে (unshift) কাজ করে, নতুন উপাদানটিকে ইনডেক্সে যোগ করে এবং অ্যারের length প্রপার্টি আপডেট করে। এটি push-এর অনুরূপ কিন্তু অ্যারের শুরুতে কাজ করে।
"use strict";
const arr = [0, 1, 2, 3];
alert(arr); // ০, ১, ২, ৩
const len = arr.unshift(100);
alert(len); // ৫
alert(arr); // ১০০, ০, ১, ২, ৩
shift
shift মেথডটি অ্যারের প্রথম উপাদানটি সরিয়ে দেয় এবং সেই উপাদানটি প্রদান করে। এটি প্রতিটি পুরোনো উপাদানকে তার পুরোনো ইনডেক্স থেকে -এ সরিয়ে (shift) কাজ করে, অ্যারের length প্রপার্টি আপডেট করে এবং পুরোনো প্রথম উপাদানটি প্রদান করে। এটি pop-এর অনুরূপ কিন্তু অ্যারের শুরুতে কাজ করে।
"use strict";
const arr = [0, 1, 2, 3];
alert(arr); // ০, ১, ২, ৩
const elem = arr.shift();
alert(elem); // ০
alert(arr); // ১, ২, ৩
unshift এবং shift অ্যারের শুরুতে কাজ করে; তারা একে অপরের বিপরীত প্রভাব ফেলে।