Slice() Method in Javascript
05 জানুয়ারি 2022
আজকের আলোচনার বিষয় হলো জাভাস্ক্রিপ্টের slice() Method. slice Method এর মাধ্যমে মুল অ্যারে থেকে কিছু আইটেম সিলেক্ট করে নতুন অ্যারে তৈরী করা যায়। নিচে বেশকিছু উদাহরণসহ slice() Method বর্ণনা করা হয়েছে।
Fact-1:
const arr=[1,2,3,4,5,6];
const nArr=arr.slice(2,5);// 2 নং ইনডেক্স থেকে 5 নং ইনডেক্সের আগ পর্যন্ত
console.log(nArr);//Ans: 3,4,5
slice() Method এ নতুন অ্যারে ক্রিয়েট হয় যেখানে মুল অ্যারে থেকে আমি যা Select করব সেইসব সিলেক্টেড আইটেমের কপি রাখা হয়। এক্ষেত্রে মুল অ্যারেটার কোন পরিবর্তন হয় না। যেমন এখানে আমি arr এর 2 নং ইনডেক্স থেকে 5 নং ইনডেক্সের আগ পর্যন্ত সিলেক্ট করে নতুন অ্যারে nArr মধ্যে রেখেছি।
slice(start,end) মেথডের দুইটি অংশ থাকেঃ-
🔥starting point: এটার মানে আমি কোন ইনডেক্স থেকে কাজ শুরু করব, যেমন এখানে আমি 2 নং ইনডেক্স থেকে কাজ শুরু করেছি, একে ইঙ্কক্লুসিভ বলে, মানে যে ইনডেক্স দিয়েছি সেখান থেকেই কাজ শুরু করবে।
🔥Ending point:কোন ইনডেক্সের আগ পর্যন্ত কাজ করব। যেমন এখানে 5 দিয়েছি মানে, 5 নং ইনডেক্সের আগ পর্যন্ত কাজ করবে। একে এক্সক্লুসিভ বলে, মানে যে ইনডেক্স দিয়েছি তার আগ পর্যন্ত কাজ করবে।
গুরুত্বপূর্ণ টপিকঃ
start=ইনডেক্স থেকে কাজ করে। End=ইনডেক্সের আগ পর্যন্ত কাজ করে।
Fact-2:
যদি second parameter (ending point) না দেওয়া হয়
const arrN1=[1,2,3,4,5,6,7,8,9];
const myFav=arrN1.slice(3);
console.log(myFav);//[4,5,6,7,8,9]
ending point না দেওয়া হলে starting point এ যে ইনডেক্স দেওয়া হবে ওখান থেকে শুরু করে একেবারে অ্যারেটার শেষ পর্যন্ত গণনা করবে, মানে উক্ত অ্যারেটার লেন্থ পর্যন্ত।
যেমন এখানে arrN1 কে slice করে তাতে শুধু starting point হিসেবে 3 দেওয়া হয়েছে। মানে arrN1 এর 3 নং ইনডেক্স থেকে একেবারে অ্যারেটার শেষ পর্যন্ত বা arrN1.length পর্যন্ত গণনা করেছে। ফলে রেজাল্ট এসেছে 4,5,6,7,8,9
Fact-3:
যদি second parameter অ্যারেটার লেন্থ থেকেও বেশি দেওয়া হয়
const arrN2=[10,20,30,40,50,60,70];
const arrFav2=arrN2.slice(2,500);
console.log(arrFav2);//[30,40,50,60,70]
second parameter বা ending point অ্যারের লেন্থ থেকেও বেশি দেওয়া হলে ending point গণনা হবে অ্যারেটার প্রকৃত লেন্থ যতটুকু ঠিক ততটুকুই।
যেমন এখানে arrN2 কে slice করার সময় starting point দিয়েছি 2 যা এখানে 2 নং ইনডেক্স থেকে গণনা শুরু করবে। কিন্তু ending point দিয়েছি 500 arrN2 এর লেন্থ কিন্তু 500 থেকে অনেক কম। এরপরেও রেজাল্টে কোন ইরর না এসে সে ending পয়েন্ট হিসাব করবে arrN2.length পর্যন্ত। ফলে রেজাল্ট হবেঃ30,40,50,60,70
Fact-4:
যদি first parameter অ্যারের লেন্থর সমান বা বড় হয় তাহলে Empty Array [ ] শো করবে।
const arrN3=[30,50,70,90,110,130,150];
const arrFav3=arrN3.slice(100,5);
console.log(arrFav3);//[ ] Empty Array
Fact-5:
slice() এর মাধ্যমে ক্লোন করা
const arr3=["A","B","C","D"];
const cloned=arr3.slice();
console.log(cloned);//Ans: ["A","B","C","D"]
console.log(arr3==cloned);// false
slice() এর মাধ্যমে খুব সহজেই কোন অ্যারে ক্লোন করা যায়। যেমন এখানে cloned নামক ভেরিয়েবলের মধ্যে arr3.slice() দিয়ে arr3 এর কপি রেখেছি। এক্ষেত্রে arr3 এবং cloned দুইটি সম্পূর্ণ ভিন্ন অ্যারে। কারণ পরের কনসোলে যখন চেক করেছি arr3==cloned তখন সেটা false রিটার্ন করেছে।
Fact-6:
slice() এ নেগেটিভ ইনডেক্স
const arr7=["A","B","C","D","E","F"];
const arr8=arr7.slice(-5,-2);
console.log(arr8);//Ans: ["B","C","D"]
নেগেটিভ ইনডেক্স গণনা হয় ডান থেকে বামে। আর নেগেটিভ ইনডেক্স শুরু হয় -1 দিয়ে। এখানে, F=-1 E=-2 D=-3 C=-4 B=-5 A=-6
তাহলে আমাদের slice এ দেওয়া starting point -5 মানে হলো B থেকে শুরু হবে এবং Ending point -2 এর মানে হলো E এর আগ পর্যন্ত মানে D পর্যন্ত সিলেক্ট করবে। তাই রেজাল্ট B,C,D এসেছে।
Fact-7:
নেগেটিভ এবং পজিটিভ ইনডেক্স in slice()
const arr9=["Anik","Manik","Tonik","Go","Fo","Do"];
const arr10=arr9.slice(-4,5);
console.log(arr10);//Ans: ["Tonik","Go","Fo"]
নেগেটিভ ইনডেক্স গণনা হয় -1 থেকে, এবং ডান থেকে বামে। পজিটিভ ইনডেক্স গণনা হয় 0 থেকে, এবং বাম থেকে ডানে।
এখানে starting point -4 মানে হলো "Tonik" তাই "Tonik" থেকে সিলেক্ট শুরু করবে এবং ending point 5 (5 নং ইনডেক্স) হলো "Do" এর আগ পর্যন্ত সিলেক্ট করবে। তাই রেজাল্ট হবে "Tonik" থেকে "Fo" পর্যন্ত।
Fact-8:
String এ slice() Method
let str=new String("Hey! Anik");
let cutStr= str.slice(0,4);
console.log(cutStr);//"Hey!"
দেখা গেল অ্যারের মতো স্ট্রিং এ slice() Method ব্যবহার করা যায়। যেমন এখানে str এ আছে "Hey! Anik" str কে slice করে এর 0 নং ইনডেক্স থেকে 4 নং ইনডেক্সের আগ পর্যন্ত "Hey!" সিলেক্ট করে নিয়ে এসেছে।
আজ এই পর্যন্তই যদি কোন ভুল হয়ে থাকে তাহলে অবশ্যই ধরিয়ে দিবেন!©Anik