জাভাস্ক্রিপ্ট অ্যারে টিউটোরিয়াল (JavaScript Array Tutorial in Bangla)
জাভাস্ক্রিপ্টে ভেরিয়েবল দেখে এসেছেন নিশ্চয়। একটা ভেরিয়েবলে একটাই মান রাখা যায় এরপর যদি সেই ভেরিয়েবলে অন্য মান assign করেন সাথে সাথে ভেরিয়েবলটির মান পরিবর্তন হয়ে যায়। তবে অ্যারে দিয়ে একটা ভেরিয়েবলে অনেক মান একসাথে রাখতে পারেন। যেকোন মান রাখতে পারেন। যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
1.
document.write(tutorial[0]);
প্রয়োগ দেখুন
এভাবে যদি দ্বিতীয় মানটি দেখতে চান তাহলে tutorial[1] এবং এরুপে অন্যান্যগুলি।
** অ্যারের প্রতিটি মানকে এলিমেন্ট বলে অর্থ্যাৎ উপরের tutorial অ্যারেতে ৪টি এলিমেন্ট আছে। প্রত্যেকটি এলিমেন্ট যেকোন কিছু হতে পারে, একটা স্ট্রিং কিংবা একটা পূর্নসংখ্যা এমনকি একটা অবজেক্ট।
** প্রথম মানের জন্য ০ শূন্য দিয়ে শুরু করে এভাবে ক্রমানুসারে পরেরগুলির জন্য জাভাস্ক্রিপ্ট index নাম্বার দেয়। একসেস নেয়ার সময় প্রথমে ভেরিয়েবলের নাম এরপর তৃতীয় বন্ধনীর (square bracket) এর ভিতর index নাম্বারটি। যেমন ২য় মানটি একসেস করতে চাইলে tutorial[1] এভাবে।
** অ্যারে বানাতে হয় প্রথম উদাহরনের মত, তৃতীয় বন্ধনীর ভিতর single বা double কোটেশনের ভিতর মান দিতে হয় এবং প্রতিটি মান কমা (,) দিয়ে আলাদা রাখতে হবে। এভাবে অ্যারে তৈরীর প্রক্রিয়ার টেকনিকাল নাম হচ্ছে "অ্যারে লিটারেল"।
এছাড়া new কিওয়ার্ড Array() ফাংশন (এটার নাম আসলে কনস্ট্রাক্টর) ব্যবহার করে অ্যারে বানানো যায় যেমন উপরের অ্যারেটি চাইলে নিচের মত করে তৈরী করতে পারেন।
1.
var
tutorial =
new
Array(
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
);
** যদি কনস্ট্রাক্টর দিয়ে অ্যারে বানান তাহলে এর ভিতরে দেয়া মানগুলি (যেগুলি কোটেশনের ভিতর রাখা হচ্ছে এবং কমা দিয়ে আলাদা করা হচ্ছে) অ্যারের এলিমেন্ট হয়ে যায়। এখানে একটু সমস্যা হচ্ছে যদি কনস্ট্রাক্টর এর মান একটি দেন এবং সেটা হয় পূর্নসংখ্যা তাহলে অ্যারেতে মোট সেই সংখ্যা পরিমান এলিমেন্ট আছে বলে জাভাস্ক্রিপ্ট ধরে নেয়।
যেমন যদি var tutorial = new Array(8); দিলে জাভাস্ক্রিপ্ট ধরবে tutorial একটি অ্যারে এবং এখানে ৮টি এলিমেন্ট আছে আর যদি var tutorial = new Array(8, 'HTML', 'CSS'....); এভাবে দেন তাহলে ৮ কে সে একটা এলিমেন্ট হিসেবে গন্য করবে যেমন 'HTML' কে করছে। এভাবে কনস্ট্রাক্টর দিয়ে অ্যারে বানানোর চেয়ে প্রথম উদাহরনের মত করে অর্থ্যাৎ "অ্যারে লিটারেল" এইভাবে অ্যারে তৈরী করা ভাল।
কনস্ট্রাক্টর ব্যবহার করে বানানো অ্যারেকে আবার নিচের মত করেও লিখতে পারেন
1.
var
tutorial =
new
Array();
2.
tutorial[0] =
'HTML'
;
3.
tutorial[1] =
'CSS'
;
4.
5.
tutorial[2] =
'JavaScript'
;
6.
tutorial[3] =
'PHP'
;
অ্যারে কিন্তু বিশেষ ধরনরে একটা অবজেক্ট। ভেরিয়েবল টিউটোরিয়ালে typeof অপারেটর দিয়ে কিভাবে ভেরিয়েবলের ধরন বের করতে হয় সেটা দেখানো হয়েছে। যেকোন একটা চেক করে দেখবেন "object" দেখাবে। যাইহোক এর length নামে একটা প্রোপার্টি যেটা দিয়ে অ্যারেতে কয়টি এলিমেন্ট আছে সেটা দেখা যায়। যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
document.write (tutorial . length);
আউটপুট 4 দেখাবে। কারন অ্যারেতে ৪টি এলিমেন্ট আছে।
এই length প্রোপার্টি দিয়ে শুধু অ্যারের এলিমেন্ট সংখ্যা দেখার কাজ ছাড়াও আরও কয়েকটি কাজ হয়, যেমন আপনি চাইলে অ্যারে থেকে একটি এলিমেন্ট বাদ দিয়ে দিতে পারেন এভাবে
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial . length = 3;
ব্যাস ৪ টি এলিমেন্ট থেকে এখন অ্যারেতে ৩টি এলিমেন্ট হয়ে গেছে, শেষেরটি বাদ পরেছে। যদি পরীক্ষা করে দেখতে চান তাহলে ৪ নম্বর এলিমেন্ট টিতে একসেস নিতে চেষ্টা করুন।
1.
document.write(tutorial[3]);
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial . length = 20;
length প্রোপার্টি দিয়ে অ্যারের শেষে এলিমেন্ট যোগ করা যায় যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial[tutorial.length] =
'Framework'
;
3.
tutorial[tutorial.length] =
'jQuery'
;
4.
tutorial[tutorial.length] =
'Database'
;
5.
document.write(tutorial[5]);
আউটপুট "jQuery" দেখাবে। উপরের উদাহরেন tutorial অ্যারেতে tutorial[tutorial.length] এভাবে আরো মোট ৩টি এলিমেন্ট একটার পর একটা যোগ করা হয়েছে এবং জাভাস্ক্রিপ্ট অটোমেটিক এসব যোগকৃত এলিমেনন্টের index নাম্বার আপডেট করে নেয়। এমনকি document.write(tutorial.length); দিয়ে চেক করে দেখুন ৭ দেখাবে অর্থ্যাৎ এলিমেন্ট সংখ্যাও আপডেট হয়ে যায়।
তবে এভাবে অ্যারেতে এলিমেন্ট যোগ করা হয়না বরং push() নামে একটা মেথড আছে এটা দিয়ে অ্যারেতে এলিমেন্ট যোগ করা হয়। push() এর ভিতর একাধিক এলিমেন্ট সিঙ্গেল বা ডাবল কোটেশনের ভিতর রেখে কমা (,) চিহ্ন দিয়ে আলাদা রাখা হয় এবং এগুলি সব অ্যারের শেষে গিয়ে যুক্ত হয় যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial.push(
'Framework'
,
'jQuery'
,
'Database'
);
3.
document.write(tutorial.length +
'<br/>'
);
4.
document.write(tutorial[6]);
7
Database
** অ্যারের নাম tutorial এরপর ডট (.) দিয়ে push() এর ভিতর যেসব এলিমেন্ট দিতে চান সেগুলি কমা দিয়ে দিয়ে কোটেশনের ভিতরে রাখলেই অ্যারেতে যোগ হয়ে যাবে।
যদি অ্যারের প্রথমেই এলিমেন্ট যোগ করতে চান তাহলে unshift() মেথড আছে যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
3.
tutorial.unshift(
'Framework'
,
'jQuery'
,
'Database'
);
4.
5.
document.write(tutorial.length +
'<br/>'
);
6.
document.write(tutorial[0]);
7
Framework
দেখুন অ্যারের প্রথমে ছিল "HTML" এবং এর index নাম্বার ছিল ০। unshift() দিয়ে শুরুতে এলিমেন্ট যোগ করাতে যোগকৃত এলিমেন্টগুলির index শূন্য (০) থেকে শুরু হয়েছে। ফলে এখন "HTML" এর index নাম্বার হবে ৩।
অ্যারে ক্রমানুসারে সাজানো
একটা অ্যারের এলিমেন্টগুলি যদি অগোছালো থাক তাহলে sort() মেথড দিয়ে অ্যারে ক্রমানুসারে সাজাতে পারেন (ছোট থেকে বড় তবে নাম্বার অনুযায়ী নয় - অক্ষর অনুযায়ী) যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial.sort();
3.
document.write(tutorial[0] +
', '
+ tutorial[1] +
', '
+ tutorial[2] +
', '
+ tutorial[3]);
4.
//now array becomes ['CSS', 'HTML', 'JavaScript', 'PHP']
CSS, HTML, JavaScript, PHP
sort() দিয়ে a - z এভাবে ক্রমানুসারে আসে আপনি যদি এর বিপরীতভাবে অ্যারে সাজাতে চান তাহলে আছে reverse() মেথড।
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial.sort();
3.
tutorial.reverse();
4.
document.write(tutorial[0] +
', '
+ tutorial[1] +
', '
+ tutorial[2] +
', '
+ tutorial[3]);
5.
6.
//now array becomes ['PHP', 'JavaScript', 'CSS', 'HTML']
PHP, JavaScript, HTML, CSS
sort() মেথডে একটা ফাংশন প্যারামিটার হিসেবে পাঠানো যায়। চাইলে এই ফাংশন ব্যবহার করে অ্যারেকে সংখ্যার ক্রমানুসারে সাজাতে পারেন। যেমন
01.
var
tutorial = [1,60,3,55,8,40];
02.
tutorial.sort(comparison);
03.
function
comparison(x, y){
04.
if
(x > y){
05.
return
1;
06.
}
else
if
(x < y){
07.
return
-1;
08.
}
else
{
09.
return
0;
10.
}
11.
12.
}
13.
document.write(tutorial);
1,3,8,40,55,60
অথচ এই ফাংশন ব্যবহার না করলে আউটপুট এভাবে ছোট থেকে বড় আসতনা। এবার এখান reverse() মেথড ভ্রবহার করে বড় থেকে ছোট করতে পারেন।
shift() মেথড ব্যবহার করে অ্যারের প্রথম এলিমেন্ট টিকে মোছা যায় যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial.shift();
3.
4.
//now array becomes ['CSS','JavaScript','PHP']
pop() মেথড ব্যবহার করে অ্যারের শেষ এলিমেন্ট মোছা যায় যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial.pop();
3.
//now array becomes ['HTML', 'CSS', 'JavaScript']
একটা অ্যারে থেকে কিছু এলিমেন্ট নিয়ে আরেকটা নতুন অ্যারে তৈরী করা যায় slice() মেথড দিয়ে যেমন
01.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
02.
tutorial.slice(1);
03.
// now array becomes ['CSS', 'JavaScript', 'PHP']
04.
05.
06.
07.
08.
tutorial.slice(1,3);
09.
//no array becomes ['CSS', 'JavaScript']
** slice() মেথডে দুটি প্যারামিটার পাঠানো যায় সংখ্যা দিয়ে। প্রথম প্যারামিটার (সংখ্যা) দিয়ে সে ঠিক করবে কোন্ এলিমেন্ট থেকে নেয়া শুরু হবে এবং পরের প্যারামিটার দিয়ে ঠিক করবে কোথা পর্যন্ত নিবে। যেমন slice(1,3) দেয়াতে ১ নম্বর এলিমেন্ট থেকে ৩ নাম্বারের আগে পর্যন্ত নিয়েছে (শেষেরটি নেয়না)।
** একটা প্যারামিটার দিলে ঐ নাম্বার থেকে শুরু করে শেষ পর্যন্ত নিবে।
splice() মেথড ব্যবহার করে মুলত অ্যারের মাঝখানে এলিমেন্ট ঢুকানো যায় তবে এটা দিয়ে আরো কাজ হয়। যেমন আপনি একটা অ্যারের ১ থেকে ৩ নাম্বার পর্যন্ত যদি সব এলিমেন্ট মুছতে চান তাহলে
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial.splice(1,3);
3.
//now array becomes ['HTML']
যদি অ্যারের মাঝে কোন এলিমেন্ট ঢুকাতে চান তাহলে
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
tutorial.splice(1, 1,
'jQuery'
,
'MySQL'
);
3.
//now array becomes ['HTML', 'jQuery', 'MySQL', 'JavaScript', 'PHP']
splice() এর ভিতর প্রথম প্যারামিটার 1 দিয়ে ১ নম্বর ইনডেক্স থেকে এলিমেন্ট প্রবেশ করবে এ নির্দেশনা দেয়া হয়েছে এরপরের প্যারামিটার 1 দিয়ে ১ নম্বর ইনডেক্সধারী এলিমেন্ট টি মুছে দেয়া হয়েছে ("CSS")। সবশেষে "jQuery" এবং "MySQL" হচ্ছে নতুন এলিমেন্টগুলি যেগুলি প্রবেশ করানো হচ্ছে। আপনি চাইলে আরো এলিমেন্ট দিতে পারে আমি ২টি দিলাম।
২য় প্যারামিটারে যদি 0 দেন তাহলে কোন এলিমেন্ট মুছবেনা। এখানে যে সংখ্যা দিবেন ততটি এলিমেন্ট মুছে যাবে আর মোছা শুরু হবে ১ম প্যারামিটারে যে সংখ্যাটি দিবেন সেই সংখ্যা যার ইনডেক্স হবে সেখান থেকে। সোজা কথা ১ম প্যারামিটারে যে সংখ্যা থাকবে সেই পজিশন থেকে ততটা এলিমেন্ট মুছে দিবে যেটা ২য় প্যারামিটারে (যে সংখ্যা) থাকবে। এরপর পরের প্যারামিটারগুলিতে দেয়া এলিমেন্টগুলি ঢুকিয়ে দেবে।
indexOf() এবং lastIndexOf() মেথড
একটা অ্যারের কোন একটা এলিমেন্ট কোন্ পজিশনে আছে সেটা খুজে বের করতে indexOf() মেথড ব্যবহার করা হয়। যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
,
'erte'
];
2.
var
ind = tutorial.indexOf(
'JavaScript'
);
3.
document.write(ind);
2
অর্থ্যাৎ 'JavaScript' এলিমেন্ট টি অ্যারের ২ নাম্বার পজিশনে আছে।
** indexOf() এ আরেকটা প্যারামিটার (পূর্নসংখ্যা) দেয়া যায়। এই প্যারামিটার দিয়ে ঠিক করে দিতে পারেন যে কত নম্বর পজিশন থেকে খোজা শুরু করবে। যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
,
'HTML'
];
2.
var
ind = tutorial.indexOf(
'HTML'
, 3);
3.
document.write(ind);
4
কারন ৪ নম্বর পজিশনে 'HTML' নামে আরেকটা এলিমেন্ট আছে এবং indexOf('HTML', 3) দেয়াতে ৩ নম্বর পজিশন থেকে 'HTML' খোজা শুরু করেছে। যদি এই প্যারামিটারটি (3) না দিতাম তাহলে আউটপুট ০ আসত। কারন তখন প্রথম থেকে খোজা শুরু করত।
lastIndexOf() দিয়ে অ্যারের শেষ দিকে থেকে খোজা শুরু করে যেখানে indexOf() দিয়ে অ্যারের প্রথম দিক থেকে খোজা শুরু করে।
01.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
,
'HTML'
];
02.
var
ind = tutorial.lastIndexOf(
'HTML'
);
03.
document.write(ind +
'<br/>'
);
04.
05.
06.
// with two parameter
07.
08.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
,
'HTML'
];
09.
var
ind1 = tutorial.lastIndexOf(
'HTML'
, 1);
10.
document.write(ind1);
4
0
join() ফাংশন
এই ফাংশন দিয়ে অ্যারের এলিমেন্টকে স্ট্রিং এ রুপান্তর করা যায় এবং আপনি চাইলে যেকোন চিহ্ন দিয়ে স্ট্রিংগুলিকে আলাদা করে দেখতে পারেন। join() এর ভিতর ঐ চিহ্নটি প্যারামিটার হিসেবে পাঠাতে হয়। যেমন
1.
var
tutorial = [
'HTML'
,
'CSS'
,
'JavaScript'
,
'PHP'
];
2.
var
atoS = tutorial.join(
','
);
3.
document.write(atoS );
HTML,CSS,JavaScript,PHP
** দেখুন অ্যারের প্রতিটি এলিমেন্ট কে স্ট্রিং বানিয়েছে এবং কমা দিয়ে আলাদা করেছে। যদি join() এর ভিতর কমা না দিয়ে অন্য চিহ্ন দিতাম তখন সেই চেহ্ন থাকত প্রতিটি স্ট্রিংয়ের মাঝে।
আবার split() একটা ফাংশন আছে এটা দিয়ে স্ট্রিংকে অ্যারে বানানো যায় যেমন
1.
var
tutorial =
'HTML,CSS,JavaScript,PHP'
;
2.
tutorial.split(
','
);
3.
//now an array created ['HTML', 'CSS', 'JavaScript', 'PHP']
** স্ট্রিং যে চিহ্ন দিয়ে আলাদা থাকবে সেটা join() এর ভিতর প্রথম প্যারামিটার হিসেবে পাঠাতে হবে যেমন আমি পাঠিয়েছি (কমা চিহ্ন)। সাধারনত স্ট্রিং স্পেস দিয়ে আলাদা থাকে তখন split(' ') এভাবে দিতে হবে। এছাড়া join() এ পূর্নসংখ্যা হিসেবে আরেকটা ২য় প্যারামিটার পাঠানো যায় সেটা দিলে ঐ সংখ্যা পরিমান দীর্ঘ হবে অ্যারেটি। আর যদি কিছু না দেন তাহলে split() ফাংশন পুরো স্ট্রিং কে ভেঙ্গে ভেঙ্গে অ্যারে বানিয়ে ছাড়বে।
0 মন্তব্য(গুলি):
Post a Comment