<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhid Hossain</title>
    <description>The latest articles on DEV Community by Muhid Hossain (@muhidhossain).</description>
    <link>https://dev.to/muhidhossain</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F690371%2F823622ee-2f26-44a3-aeb2-73f8446b049e.jpg</url>
      <title>DEV Community: Muhid Hossain</title>
      <link>https://dev.to/muhidhossain</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muhidhossain"/>
    <language>en</language>
    <item>
      <title>জাভাস্ক্রিপ্ট ডেটা স্ট্রাকচার - অবজেক্ট</title>
      <dc:creator>Muhid Hossain</dc:creator>
      <pubDate>Tue, 11 Apr 2023 17:31:14 +0000</pubDate>
      <link>https://dev.to/muhidhossain/jaabhaaskriptt-ddettaa-sttraakcaar-abjektt-ege</link>
      <guid>https://dev.to/muhidhossain/jaabhaaskriptt-ddettaa-sttraakcaar-abjektt-ege</guid>
      <description>&lt;p&gt;সোর্স: &lt;a href="http://www.learnersbucket.com"&gt;www.learnersbucket.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  অবজেক্ট কি?
&lt;/h2&gt;

&lt;p&gt;অবজেক্ট হলো কতগুলো প্রোপার্টির একটি বক্স যেটি মিউটেবল। যেখানে প্রোপার্টি গুলো &lt;code&gt;key-value&lt;/code&gt; জোড়ায় থাকে। &lt;code&gt;key&lt;/code&gt; যেকোন স্ট্রিং বা এমটি স্ট্রিং হতে পারে এবং ভেলু জাভাস্ক্রিপ্ট-এ বিদ্যমান যেকোন টাইপের ডেটা হতে পারে, কিন্তু &lt;code&gt;undefined&lt;/code&gt; হতে পারবে না। প্রত্যেকটি &lt;code&gt;key&lt;/code&gt; তে &lt;code&gt;value&lt;/code&gt; এড করা বাধ্যতামূলক।&lt;br&gt;
&lt;code&gt;number&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt;, &lt;code&gt;boolean&lt;/code&gt;, &lt;code&gt;null&lt;/code&gt; এবং &lt;code&gt;undefined&lt;/code&gt; বাদে জাভাস্ক্রিপ্ট-এ সবকিছুই অবজেক্ট। &lt;code&gt;number&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt;, &lt;code&gt;boolean&lt;/code&gt; অবজেক্ট-এর মতোই, যেহেতু এদের অবজেক্ট-এর মতো মেথড রয়েছে, কিন্তু এরা ইমমিউটএবল।&lt;/p&gt;
&lt;h3&gt;
  
  
  জাভাস্ক্রিপ্ট-এ অবজেক্ট-এর লিস্ট
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dates&lt;/li&gt;
&lt;li&gt;Regular Expression&lt;/li&gt;
&lt;li&gt;Maths&lt;/li&gt;
&lt;li&gt;Arrays&lt;/li&gt;
&lt;li&gt;Function&lt;/li&gt;
&lt;li&gt;Objects&lt;/li&gt;
&lt;li&gt;Booleans (যখন &lt;code&gt;new&lt;/code&gt; কিওয়ার্ড দিয়ে কনস্ট্রাক্টর হিসেবে কল করা হয়)&lt;/li&gt;
&lt;li&gt;Strings (যখন &lt;code&gt;new&lt;/code&gt; কিওয়ার্ড দিয়ে কনস্ট্রাক্টর হিসেবে কল করা হয়)&lt;/li&gt;
&lt;li&gt;Numbers (যখন &lt;code&gt;new&lt;/code&gt; কিওয়ার্ড দিয়ে কনস্ট্রাক্টর হিসেবে কল করা হয়)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  জাভাস্ক্রিপ্ট-এ অবজেক্ট ডিকলার করা
&lt;/h2&gt;
&lt;h3&gt;
  
  
  অবজেক্ট লিটারাল ব্যবহার করে
&lt;/h3&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ &lt;code&gt;{}&lt;/code&gt; ব্যবহার করে সবথেকে সহজে অবজেক্ট ডিকলার করা যায়।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {};
obj.name = 'Muhid';
obj["age"] = 25;

let obj2 = {
   "name": 'Muhid',
   age: 25
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;যেহেতু অবজেক্ট-এ &lt;code&gt;key&lt;/code&gt; এমপ্টি স্ট্রিং সহ যেকোন স্ট্রিং হতে পারে তাই আমরা এর কোটস &lt;code&gt;""&lt;/code&gt; গুলো ব্যবহার না করেই ডিকলার করতে পারি, যদি স্ট্রিং এ কোন স্পেস না থাকে।&lt;/p&gt;

&lt;p&gt;অবজেক্ট-এর মধ্যে নেস্টেড অবজেক্টও এড করা যায়।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   name: "Muhid",
   age: 25,
   details: {
      hobbies: ["Walking", "Plying cricket"],
      Gender: "Male",
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;অবজেক্ট-এর মধ্যে ফাংশনও ডিকলার করা যায়, এই ফাংশনকে &lt;code&gt;method&lt;/code&gt; বলে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   name: 'Muhid',
   getName: function() {
      return this.name;
   }
}

console.log(obj.getName());
//"Muhid"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;new&lt;/code&gt; কীওয়ার্ড ব্যবহার করে অবজেক্ট তৈরি করা
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = new Object();
obj.name = "Muhid";
obj.age = 25;
obj.getDetails = function(){
  return `${this.name} is ${this.age} years old`;
};

console.log(obj.getDetails());
//"Muhid is 25 years old"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  কনস্ট্রাক্টর ব্যবহার করে অবজেক্ট তৈরি করা
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Obj(name, age){
   //Properties
   this.name = name;
   this.age = age;

   //Methods
   this.getDetails = function(){
     return `${this.name} is ${this.age} years old`;
   }
}

let person = new Obj("Muhid", 25);
console.log(person.getDetails());
//"Muhid is 25 years old"

let person2 = new Obj("Roman", 24);
console.log(person2.getDetails());
//"Roman is 24 years old"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  অবজেক্ট-এর ডেটা রিড করা
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;.&lt;/code&gt; নোটেশন ব্যবহার করে ডেটা রিড করা
&lt;/h3&gt;

&lt;p&gt;আমরা &lt;code&gt;.&lt;/code&gt; নোটেশন ব্যবহার করে অবজেক্ট-এর ডেটা রিড করতে পারি, যদি ঐ &lt;code&gt;key&lt;/code&gt; এর মধ্যে কোনো স্পেস না থাকে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   name: "Muhid",
   "what is this": "Example",
   "my age": 25
};
obj.name;
//"Muhid"

obj.what is this
//Uncaught SyntaxError: Unexpected identifier
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;স্পেস আছে এমন &lt;code&gt;key&lt;/code&gt; দিয়ে প্রোপার্টি এক্সেস করলে ইরর দেখায়।&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;[]&lt;/code&gt; ব্যবহার করে ডেটা রিড করা
&lt;/h3&gt;

&lt;p&gt;আমরা যখন নিশ্চিত নই যে &lt;code&gt;key&lt;/code&gt; এর মধ্যে স্পেস আছে কিনা, তখন আমারা &lt;code&gt;[]&lt;/code&gt; ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   name: "Muhid",
   "what is this": "Example",
   "my age": 25
};

obj["name"];
//"Muhid"

obj["what is this"];
//"Example"

obj["my age"];
//25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;.&lt;/code&gt; এর পরে যে ওয়ার্ড ব্যবহার করা হয় তা অবজেক্ট লিটারাল হিসেবে ইন্টারপ্রেট করা হয়। &lt;code&gt;[]&lt;/code&gt; এর ক্ষেত্রে ব্যবহৃত ওয়ার্ডটি ইভালুয়েট করা হয় তারপর ঐ ইভালুয়েট করা ওয়ার্ডে এসাইন করা ভেলু রিটার্ন করা হয়।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   1: "one",
   2: "two",
   3: "three"
};

for(let i = 1; i &amp;lt;= 3; i++){
     console.log(obj.i);
}
//undefined
//undefined
//undefined

for(let i = 1; i &amp;lt;= 3; i++){
     console.log(obj[i]);
}
//"one"
//"two"
//"three"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;প্রথম লুপে &lt;code&gt;.&lt;/code&gt; ব্যবহার করে ডেটা রিড করার সময় &lt;code&gt;undefined&lt;/code&gt; দেখায়, কারণ এখানে &lt;code&gt;i&lt;/code&gt; কে প্রোপার্টির &lt;code&gt;key&lt;/code&gt; হিসেবে ট্রিট করা হয়েছে। যেখানে &lt;code&gt;i&lt;/code&gt; নামে কোনো প্রোপার্টি অবজেক্টটিতে নেই।&lt;/p&gt;

&lt;p&gt;দ্বিতীয় লুপে &lt;code&gt;i&lt;/code&gt; কে ইভালুয়েট করা হয়েছে &lt;code&gt;obj[i]&lt;/code&gt; এর মধ্যে এবং এটি &lt;code&gt;obj[1]&lt;/code&gt; এ রুপান্তরিত হয়েছে ও &lt;code&gt;one&lt;/code&gt; রিটার্ন করেছে।&lt;/p&gt;

&lt;h3&gt;
  
  
  অবজেক্ট-এ নেই এমন প্রোপার্টি হ্যান্ডেল করা
&lt;/h3&gt;

&lt;p&gt;যেসব প্রোপার্টি অবজেক্ট-এর মধ্যে নেই সেগুলো রিড করলে &lt;code&gt;undefined&lt;/code&gt; রিটার্ন করবে&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   first_name: "Muhid"
};

obj.first_name;
//"Muhid"

obj.last_name;
//undefined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;আমরা &lt;code&gt;||&lt;/code&gt; অপারেটর ব্যবহার করে যেসকল প্রোপার্টি এক্সিস্ট করেনা তাদের পরিবর্তে ডিফল্ট ভ্যালু সেট করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let lastName = obj.last_name || "Hossain";
//"Hossain"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এক্সিস্ট করে না এমন কোন প্রপার্টির মধ্যের প্রপার্টি এক্সেস করলে এরর দেখাবে। &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; অপারেটর ব্যবহার করে এরর রোধ করা যায়।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;obj.last_name;
//undefined

obj.last_name.intial
//Uncaught TypeError: Cannot read property 'intial' of undefined

obj.last_name &amp;amp;&amp;amp; obj.last_name.intial
//undefined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; অপারেটর ডান পাশের এক্সপ্রেশন তখনই ইভ্যালুয়েট করবে যখন বাম পাশের এক্সপ্রেশন &lt;code&gt;true&lt;/code&gt; হবে।&lt;/p&gt;

&lt;h2&gt;
  
  
  অবজেক্ট-এর ভ্যালু আপডেট করা
&lt;/h2&gt;

&lt;p&gt;আমরা নতুন ভ্যালু অ্যাসাইন করে অবজেক্ট-এর ভ্যালু আপডেট করতে পারি। যদি ঐ প্রোপার্টি আগে থেকে বিদ্যমান না থাকে তাহলে এটি নতুন প্রোপার্টি অ্যাড করবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   name: "Muhid"
}

obj.name = "Roman";
obj.name;
//"Roman"

obj.age = 25;
obj.age;
//25

obj["gender"] = "Male";
obj["gender"];
//"Male"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;অন্য কোন অবজেক্ট-এর ভ্যালু কপি করার সময় মনে রাখতে হবে যে অবজেক্ট রেফারেন্স হিসেবে পাস হয় কখনোই কপি হয় না।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {};

let person = obj;
person.name = "Muhid";

let person2 = obj.name;
person2;
//"Muhid"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে আমরা &lt;code&gt;person.name&lt;/code&gt; এ ভ্যালু এসাইন করেছি কিন্তু আমরা যখন &lt;code&gt;obj.name&lt;/code&gt; এর ভ্যালু এক্সেস করছি তখন একই ভ্যালু পাচ্ছি কারণ আমরা একই অবজেক্টকে রেফার করছি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//Referencing to the same object
let a = b = c = {};

//Referencing to the different objects
let a = {}, b = {}, c = {};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  জাভাস্ক্রিপ্ট-এ অবজেক্ট কপি করা
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Shallow&lt;/code&gt; কপি
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Shallow&lt;/code&gt; কপি করার জন্য আমরা &lt;code&gt;Object.assign(To, From)&lt;/code&gt; মেথড ব্যবহার করব যা একটি অবজেক্টকে অন্য অবজেক্টে কপি করে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   name: "Muhid",
   age: 25,
   details: {
     gender: "Male"
   }
};

let copy = Object.assign({}, obj);
copy.name;
//"Muhid"

copy.age
//25

copy.details.gender;
//"Male"

//Update the gender
obj.details.gender = "Female";

copy.details.gender;
//"Female"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;দেখা যাচ্ছে যখন আমরা &lt;code&gt;obj.details.gender = "Female"&lt;/code&gt; এর ভ্যালু আপডেট করছি তা কপি অব্জেক্ট &lt;code&gt;copy.details.gender&lt;/code&gt; মধ্যে রিফ্লেক্ট করছে।&lt;br&gt;
&lt;code&gt;Shallow&lt;/code&gt; কপি এর ক্ষেত্রে নেস্টেট অবজেক্ট রেফারেন্স হিসেবেই পাস করা হয়।&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;code&gt;Deep&lt;/code&gt; কপি
&lt;/h3&gt;

&lt;p&gt;আমরা ডিপ কপি করার জন্য &lt;code&gt;JSON.parse()&lt;/code&gt; এবং &lt;code&gt;JSON.stringify()&lt;/code&gt; একসাথে ব্যবহার করব।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
   name: "Muhid",
   age: 25
};

let copy = JSON.parse(JSON.stringify(obj));
copy.name;
//"Muhid"

copy.age
//25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  অবজেক্টকে প্রটো-টাইপের সাহায্যে এক্সটেন্ড করা
&lt;/h2&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ সকল অবজেক্ট প্রোটো-টাইপের সাথে লিংক করা থাকে যেখান থেকে আমরা বিভিন্ন প্রপার্টি এবং মেথড ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {};

obj.name = "Muhid";
obj.age = 25;
obj.prototype.getDetails = function(){return `${this.name} is ${this.age} years old`};

console.log(obj.getDetails());
//"Muhid is 25 years old"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;অবজেক্ট এর ভ্যালু এক্সেস করার সময় যদি ওই প্রোপার্টি না থাকে তাহলে প্রোটো-টাইপের মধ্যে খুঁজে দেখবে। যদি প্রোটো-টাইপের মধ্যেও না থাকে তাহলে &lt;code&gt;undefined&lt;/code&gt; রিটার্ন করবে। এই প্রোটো-টাইপ চেইনের মধ্যে খুঁজে দেখা কে &lt;code&gt;Delegation&lt;/code&gt; বলে।&lt;/p&gt;

&lt;h2&gt;
  
  
  অবজেক্ট-এর প্রপার্টি ডিলিট করা
&lt;/h2&gt;

&lt;p&gt;আমরা &lt;code&gt;delete&lt;/code&gt; অপারেটর ব্যবহার করে অবজেক্ট থেকে প্রোপার্টি রিমুভ করতে পারি। যদি অবজেক্ট-এর মধ্যে প্রোপার্টিটি না থাকে তাহলে এটি সম্পূর্ণ প্রসেস ইগনোর করে যাবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {};

obj.name = "Muhid";
obj.age = 25;

//Add properties and Methods inside the prototype.
obj.prototype.age = 24;
obj.prototype.getDetails = function(){return `${this.name} is ${this.age} years old`};

console.log(obj.getDetails());
//"Muhid is 25 years old"

//Remove age
delete obj.age;

console.log(obj.getDetails());
//"Muhid is 24 years old"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এটি শুধু অবজেক্টের প্রপার্টি ডিলিট করবে এটি অবজেক্টের সাথে লিঙ্ক করা প্রটো-টাইপ থেকে কিছু রিমুভ করবে না। তাই যদি প্রপার্টিটি প্রোটো-টাইপের মধ্যে থাকে তাহলে তা এক্সেস করবে।&lt;/p&gt;

&lt;h2&gt;
  
  
  প্রোপার্টি বা মেথড অবজেক্ট এর মধ্যে বিদ্যমান কিনা চেক করা
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;hasOwnProperty()&lt;/code&gt; ব্যবহার করে
&lt;/h3&gt;

&lt;p&gt;আমরা &lt;code&gt;hasOwnProperty()&lt;/code&gt; মেথড ব্যবহার করে অবজেক্ট এর মধ্যে প্রোপার্টি বা মেথডটি বিদ্যমান কিনা তা চেক করতে পারি। এটি প্রটো-টাইপ চেইনের মধ্যে বিদ্যমান প্রোপার্টি চেক করবে না।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
    name: "Muhid",
    age: 25,
    getDetails: function(){
       return `${this.name} is ${this.age} years old`;
    }
};

//Adding property to prototype
obj.prototype.gender = "Male";

console.log(obj.hasOwnProperty("name"));
//true

console.log(obj.hasOwnProperty("age"));
//true

console.log(obj.hasOwnProperty("getDetails"));
//true

console.log(obj.hasOwnProperty("gender"));
//false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;in&lt;/code&gt; অপারেটর ব্যবহার করে
&lt;/h3&gt;

&lt;p&gt;আমরা &lt;code&gt;in&lt;/code&gt; অপারেটর ব্যবহার করে অবজেক্ট-এ প্রপার্টি বিদ্যমান কিনা চেক করতে পারি। এটি প্রটো-টাইপ চেইনের মধ্যে বিদ্যমান প্রপারটিও চেক করবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
    name: "Muhid",
    age: 25,
    getDetails: function(){
       return `${this.name} is ${this.age} years old`;
    }
};

//Adding property to prototype
obj.prototype.gender = "Male";

console.log("name" in obj);
//true

console.log("age" in obj);
//true

console.log("getDetails" in obj);
//true

console.log("gender" in obj);
//true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  অবজেক্ট-এ লুপ চালানো
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;for...in&lt;/code&gt; লুপ ব্যবহার করে
&lt;/h3&gt;

&lt;p&gt;আমরা &lt;code&gt;for...in&lt;/code&gt; লুপ ব্যবহার করে একটি অবজেক্ট-এর সকল প্রপার্টির উপর লুপ চালাতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = {
    name: "Muhid",
    age: 25,
    getDetails: function(){
       return `${this.name} is ${this.age} years old`;
    }
};

//Adding property to prototype
obj.prototype.gender = "Male";

for(let key in obj){
   console.log(obj[key]);
}

//"Muhid"
//25
/*
function () {
  return `${this.name} is ${this.age} years old`;
}
*/
//"Male"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এটি একটি অবজেক্ট-এর সকল প্রপার্টির উপর লুপ চালায় এমনকি প্রোটো-টাইপ চেইনের মধ্যেও। আমরা শুধু বর্তমান স্কোপের মধ্যে বিদ্যমান প্রোপার্টির উপর লুপ চালানোর জন্য &lt;code&gt;hasOwnProperty()&lt;/code&gt; ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for(let key in obj){
   if(obj.hasOwnProperty(key)){
     console.log(obj[key]);
   }
}

//"Muhid"
//25
/*
function () {
  return `${this.name} is ${this.age} years old`;
}
*/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে বিদ্যমান মেথডটির সোর্স কোড প্রিন্ট হয়েছে কারণ আমরা মেথডটি &lt;code&gt;()&lt;/code&gt; ব্যবহার করে ইভালুয়েট না করে এক্সেস করেছি। আমরা চাইলে টাইপ চেক করে এটি বন্ধ করতে পারে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for(let key in obj){
   if(obj.hasOwnProperty(key) &amp;amp;&amp;amp; typeof obj[key] !== 'function'){
     console.log(obj[key]);
   }
}

//"Muhid"
//25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;Object.keys()&lt;/code&gt; ব্যবহার করে
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Object.keys()&lt;/code&gt; একটি অবজেক্ট নেয় এবং অবজেক্ট-এর &lt;code&gt;key&lt;/code&gt; গুলোকে অ্যারে আকারে রিটার্ন করে। এটি প্রটো-টাইপ চেইনের &lt;code&gt;key&lt;/code&gt; গুলো এক্সেস করে না তাই এটি ব্যবহার করা নিরাপদ।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(Object.keys(obj));

//["name", "age", "getDetails"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;আমরা এই &lt;code&gt;key&lt;/code&gt; গুলোর অ্যারেটিকে অবজেক্ট-এর মধ্যে লুপ চালানোর জন্য ব্যবহার করতে পারি।&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;for...of&lt;/code&gt; লুপ
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//For of loop
for(let key of Object.keys(obj)){
  if(typeof obj[key] !== 'function'){
     console.log(obj[key]);
   }
}

//"Muhid"
//25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;forEach&lt;/code&gt; লুপ
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//For each loop
Object.keys(obj).forEach((key) =&amp;gt; {
  if(typeof obj[key] !== 'function'){
     console.log(obj[key]);
   }
});

//"Muhid"
//25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;অবজেক্ট হলো জাভাস্ক্রিপ্ট-এর হৃদয় এবং অবজেক্ট প্রতিনিয়ত উন্নত হচ্ছে।&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>object</category>
      <category>bangla</category>
    </item>
    <item>
      <title>জাভাস্ক্রিপ্ট ডেটা স্ট্রাকচার - অ্যারে</title>
      <dc:creator>Muhid Hossain</dc:creator>
      <pubDate>Sat, 25 Mar 2023 16:07:32 +0000</pubDate>
      <link>https://dev.to/muhidhossain/jaabhaaskriptt-ddettaa-sttraakcaar-ayaare-2h1</link>
      <guid>https://dev.to/muhidhossain/jaabhaaskriptt-ddettaa-sttraakcaar-ayaare-2h1</guid>
      <description>&lt;p&gt;সোর্স: &lt;a href="http://www.learnersbucket.com"&gt;www.learnersbucket.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;একই টাইপের অনেকগুলো ডেটা স্ট্রোর করার জন্য যে ডেটা স্ট্রাকচার ব্যবহার করা হয় অ্যারে তার মধ্যে অন্যতম। জাভাস্ক্রিপ্ট-এ অ্যারেও একটি অবজেক্ট যার অ্যারের মতো বৈশিষ্ট্য রয়েছে।&lt;/p&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ অ্যারে জিরো ইনবক্স বেইজড, যার মানে অ্যারে এর মধ্যে প্রথম ভ্যালু শূন্যতম পজিশনে দ্বিতীয় ভ্যালু প্রথম পজিশনে তারপর এভাবেই চলতে থাকে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let numbers = [10, 20, 30, 40];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  জাভাস্ক্রিপ্ট-এ অ্যারে তৈরি করা
&lt;/h2&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ অনেকগুলো উপায়ে অ্যারে ডিকলার করা যায়। জাভাস্ক্রিপ্ট-এ অ্যারে-এর নির্দিষ্ট কোনো ডাইমেনশন নেই, তাই ডিক্লেয়ার করার সময় সাইজ ঠিক করে দেয়া লাগে না।&lt;/p&gt;

&lt;h3&gt;
  
  
  সিনট্যাক্স
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//[] ব্যবহার করে অ্যারে ডিক্লেয়ার
let week = []; //সহজ উপায়

//সপ্তাহের তিন দিন নিয়ে একটি অ্যারে
let week = ['Monday', 'Tuesday', 'Wednesday'];

//কনস্ট্রাক্টর ব্যবহার করে অ্যারে ডিক্লেয়ার
let week = new Array();  

//অ্যারে লেন্থ ৭ এর একটি অ্যারে
let week = new Array(7); 

//সপ্তাহের তিন দিন নিয়ে একটি অ্যারে
let week = new Array('Monday', 'Tuesday', 'Wednesday'); 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;[ ] ব্যাবহার করে অ্যারে ডিক্লেয়ার করা বেশি সুবিধাজনক।&lt;/p&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ অ্যারে একটি অবজেক্ট তাই চাইলেই জাভাস্ক্রিপ্ট-এ আছে এরকম যে কোনো টাইপের ডেটা একটি অ্যারেতে স্টোর করা যায়।&lt;/p&gt;

&lt;h2&gt;
  
  
  অ্যারে লেন্থ
&lt;/h2&gt;

&lt;p&gt;প্রত্যেকটি অ্যারেরই একটি লেন্থ প্রপার্টি থাকে যা ব্যবহার করে আমরা অ্যারের সাইজ জানতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
console.log(week.length);
//7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;যেহেতু জাভাস্ক্রিপ্ট-এ নির্দিষ্ট কোন ডায়মেনশন নেই তাই &lt;code&gt;length&lt;/code&gt; প্রোপার্টি হল সর্বশেষ ইনডেক্স + ১ এর ইলিমেন্ট নির্দেশ করে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [];
arr[1000] = 1;
console.log(arr.length);
//1001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;যদিও এখানে ১০০০ তম ইনডেক্সে একটিমাত্র ইলিমিট রয়েছে তারপরও আমরা এখানে অ্যারে লেন্থ ১০০১ পাচ্ছি।&lt;br&gt;
জাভাস্ক্রিপ্ট-এ অ্যারেতে সর্বোচ্চ ৪,২৯৪,৯৬৭,২৯৫ সংখ্যক মান থাকতে পারে।&lt;/p&gt;
&lt;h2&gt;
  
  
  অ্যারেতে ইলিমেন্ট অ্যাড করা
&lt;/h2&gt;
&lt;h3&gt;
  
  
  অ্যারে-এর শেষে ইলিমেন্ট অ্যাড করা
&lt;/h3&gt;

&lt;p&gt;অ্যারে-এর শেষে ইলিমেন্ট অ্যাড করার জন্য আমরা &lt;code&gt;Array.push()&lt;/code&gt; মেথড ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4];
arr.push(5);
//[1, 2, 3, 4, 5];
arr.push(6, 7);
//[1, 2, 3, 4, 5, 6, 7];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এছাড়া &lt;code&gt;length&lt;/code&gt; প্রোপার্টি ব্যবহার করেও অ্যারে-এর শেষে ইলিমেন্ট অ্যাড করা যায়।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4];
arr[arr.length] = 5;
//[1, 2, 3, 4, 5];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  অ্যারে-এর শুরুতে ইলিমেন্ট অ্যাড করা
&lt;/h3&gt;

&lt;p&gt;অ্যারে-এর শুরুতে ইলিমেন্ট অ্যাড করার জন্য আমরা &lt;code&gt;Array.unshift()&lt;/code&gt; মেথড ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [2, 3, 4, 5];
arr.unshift(0, 1);
//[0, 1, 2, 3, 4, 5];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  অ্যারে-এর নির্দিষ্ট কোনো ইনডেক্সে ইলিমেন্ট অ্যাড করা
&lt;/h3&gt;

&lt;p&gt;অ্যারে-এর নির্দিষ্ট ইনডেক্সে ইলিমেন্ট অ্যাড করার জন্য আমরা &lt;code&gt;Array.splice()&lt;/code&gt; মেথড ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 5, 6];
arr.splice(3, 0, 4);
//[1, 2, 3, 4, 5, 6]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Array.splice()&lt;/code&gt; সম্পর্কে বিস্তারিত: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice"&gt;Array.splice()&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  অ্যারে থেকে ইলিমেন্ট রিমুভ করা
&lt;/h2&gt;

&lt;h3&gt;
  
  
  অ্যারে-এর শেষ থেকে ইলিমেন্ট রিমুভ করা
&lt;/h3&gt;

&lt;p&gt;অ্যারে-এর শেষ থেকে ইলিমেন্ট রিমুভ করার জন্য আমরা &lt;code&gt;Array.pop()&lt;/code&gt; মেথড ব্যবহার করতে পারি। এই অ্যারে-এর শেষ ইলিমেন্টটি রিমুভ ও রিটার্ন করে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
let last = arr.pop();
console.log(arr);
//[1, 2, 3, 4];

console.log(last);
//5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;আমার &lt;code&gt;length&lt;/code&gt; প্রোপার্টি ব্যবহার করেও অ্যারে থেকে ইলিমেন্ট রিমুভ করতে পারি। এই পদ্ধতি অ্যারে ছোট করে এবং রিমুভ করা ইলিমেন্ট অ্যাক্সেস করা যায় না।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
arr.length = 3;
console.log(arr);
//[1, 2, 3];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  অ্যারে-এর শুরু থেকে ইলিমেন্ট রিমুভ করা
&lt;/h3&gt;

&lt;p&gt;অ্যারে-এর শুরু থেকে ইলিমেন্ট রিমুভ করতে আমরা &lt;code&gt;Array.shift()&lt;/code&gt; মেথড ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
console.log(arr.shift());
//1

console.log(arr);
//[2, 3, 4, 5]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  অ্যারে-এর নির্দিষ্ট কোনো ইনডেক্সের ইলিমেন্ট রিমুভ করা
&lt;/h3&gt;

&lt;p&gt;অ্যারে-এর নির্দিষ্ট কোনো ইনডেক্সের ইলিমেন্ট রিমুভ করতে আমরা &lt;code&gt;Array.slice()&lt;/code&gt; বা &lt;code&gt;Array.splice()&lt;/code&gt; ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];

let elm = arr.splice(2, 1);
console.log(elm);
//3

let elm2 = arr.slice(2, 3);
console.log(elm2);
//4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Array.splice(start, count)&lt;/code&gt; start ইনডেক্স থেকে শুরু করে count পর্যন্ত সকল ইলিমেন্ট রিমুভ করে। এটি অরিজিনাল অ্যারেকে পরিবর্তন করে।&lt;br&gt;
&lt;code&gt;Array.slice(start, end)&lt;/code&gt; start এবং end ইনডেক্সের মধ্যে সকল ইলিমেন্ট রিমুভ করে। এটি অরিজিনাল অ্যারেকে পরিবর্তন করে না।&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;code&gt;delete&lt;/code&gt; অপারেটর ব্যবহার করে অ্যারে থেকে ইলিমেন্ট ডিলেট করা
&lt;/h2&gt;

&lt;p&gt;যেহেতু জাভাস্ক্রিপ্ট-এ অ্যারেও অবজেক্ট তাই আমারা &lt;code&gt;delete&lt;/code&gt; অপারেটর ব্যবহার করে ইলিমেন্ট ডিলেট করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
delete arr[3];
//[1, 2, 3, empty, 5];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;তবে এই মেথড ব্যবহার করলে ইলিমেন্টটি সম্পুর্ন ভাবে রিমুভ হয় না, এটি শুধু নির্দিষ্ট ইনডেক্সের ইলিমেন্ট ডিলেট করে দেয়।&lt;/p&gt;

&lt;h2&gt;
  
  
  অ্যারে-এর ইলিমেন্ট এক্সেস করা
&lt;/h2&gt;

&lt;p&gt;যেহেতু অ্যারে জিরো ইনডেক্স বেইজড তাই আমরা নিউমেরিক ইনডেক্স ব্যবহার করে ইলিমেন্ট এক্সেস করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
arr[0];
//1

arr[1];
//2

arr[2];
//3

arr[3];
//4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;যদি এমন কোনো ইলিমেন্ট এক্সেস করতে চাওয়া হয় যা অ্যারেতে বিদ্যমান নয় তাহলে &lt;code&gt;undefined&lt;/code&gt; রিটার্ন করবে।&lt;/p&gt;

&lt;h2&gt;
  
  
  অ্যারেতে লুপ এর ব্যবহার
&lt;/h2&gt;

&lt;p&gt;যেহেতু জাভাস্ক্রিপ্ট নিউমেরিক ইনডেক্স বেইজড তাই আমরা এর &lt;code&gt;length&lt;/code&gt; ব্যবহার করে প্রতিটি ইলিমেন্টের উপর লুপ চালাতে পারি।&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;for&lt;/code&gt; লুপের ব্যবহার
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
for(let i = 0; i &amp;lt; arr.length; i++){
   console.log(arr[i]);
}

//1
//2
//3
//4
//5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;for...in&lt;/code&gt; লুপের ব্যবহার
&lt;/h3&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ অ্যারেও অবজেক্ট হওয়ায় আমরা &lt;code&gt;for...in&lt;/code&gt; লুপ ব্যবহার করতে পারি। তবে খেয়াল রাখতে হবে এক্ষেত্রে প্রোপাটির অর্ডার ঠিক থাকবে তার কোন নিশ্চয়তা নেই।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
for(let prop in arr){
  console.log(arr[prop]);
}

//1
//2
//3
//4
//5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;forEach()&lt;/code&gt; মেথডের ব্যবহার
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
arr.forEach((e, i) =&amp;gt; {
   console.log(`${e} is at index ${i}`);
});

//1 is at index 0
//2 is at index 1
//3 is at index 2
//4 is at index 3
//5 is at index 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Array.forEach()&lt;/code&gt; মেথড অ্যারে-এর সকল ইলিমেন্টের উপর লুপ চালায় এবং ইলিমেন্ট ও ইনডেক্স কল ব্যাক ফাংশনে পাস করে।&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;for...of&lt;/code&gt; লুপের ব্যবহার
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3, 4, 5];
for(let val of arr){
   console.log(val);
}

//1
//2
//3
//4
//5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  অ্যারে সর্টিং
&lt;/h2&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ অ্যারে সর্টিং এর জন্য নিজস্ব মেথড রয়েছে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [2, 5, 3, 7, 5];
arr.sort(); //By default in ascending order
//[2, 3, 5, 5, 7];

arr.sort((a, b) =&amp;gt; b - a);
//[7, 5, 5, 3, 2]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Array.sort()&lt;/code&gt; মেথড একটি কলব্যাক ফাংশন নেয় এবং রিটার্ন করা ভেলু এর উপর নির্ভর করে ইলিমেন্ট গুলো সর্ট করে।&lt;/p&gt;

&lt;h2&gt;
  
  
  অ্যারে-এর মধ্যে ইলিমেন্ট সার্চ করা
&lt;/h2&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ অ্যারে এর মধ্যে ইলিমেন্ট সার্চ করার জন্য নিজস্ব মেথড রয়েছে।&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Array.indexOf()&lt;/code&gt; ব্যবহার করে সার্চ করা।
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Array.indexOf()&lt;/code&gt; মেথড ম্যাচিং ইলিমেন্টের ইনডেক্স রিটার্ন করে। ইলিমেন্টটি খুঁজে না পেলে -1 রিটার্ন করে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [2, 5, 3, 7, 5];
arr.indexOf(2);
//0

arr.indexOf(1);
//-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;Array.includes()&lt;/code&gt; ব্যবহার করে সার্চ করা
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Array.includes()&lt;/code&gt; ES7 এর একটি মেথড, যা অ্যারে-এর মধ্যে কোনো ইলিমেন্ট বিদ্যমান কিনা তা চেক করার জন্য ব্যবহার করা হয়। এটি ইলিমেন্ট খুঁজে পেলে true আর না পেলে false রিটার্ন করে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [2, 5, 3, 7, 5];
arr.includes(2);
//true

arr.includes(1);
//false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  মাল্টি-ডাইমেনশনাল অ্যারে
&lt;/h2&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ অ্যারে অনেক ফ্লেক্সিবাল এবং সাধারনত ইনিশিয়ালাইজড নয়। আমরা যদি ইনিশিয়ালাইজড ভেলু সহ অ্যারে তৈরি করতে চাই তাহলে &lt;code&gt;Array.fill(value)&lt;/code&gt; ব্যবহার করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = new Array(7).fill(1);
//[1, 1, 1, 1, 1, 1, 1];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;জাভাস্ক্রিপ্ট-এ মাল্টি-ডাইমেনশনাল অ্যারে নেই, কিন্তু একটি অ্যারে-এর মধ্যে আরেকটি অ্যারে রাখা যায়।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let matrix = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
];

/*
(3) [Array(3), Array(3), Array(3)]
0: (3) [1, 2, 3]
1: (3) [4, 5, 6]
2: (3) [7, 8, 9]
length: 3
__proto__: Array(0)
*/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;আমরা ইলিমেন্ট এক্সেস করার জন্য লুপ চালাতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for(let i = 0; i &amp;lt; matrix.length; i++){
   for(let j = 0; j &amp;lt; matrix[i].length; j++){
       console.log(matrix[i][j]);
   }
}

//1
//2
//3
//4
//5
.
.
.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;আমরা দুইটি স্কয়ার ব্রাকেট [][] ব্যবহার করেছি। কারন প্রথম স্কয়ার ব্রাকেট অ্যারে রিটার্ন করে এবং দ্বিতীয় স্কয়ার ব্রাকেট ঐ অ্যারে-এর ইলিমেন্ট এক্সেস করে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = matrix[0];
//[1, 2, 3]

arr[0]
//1

or

let arr = matrix[0][0]
//1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;যেহেতু আমারা অ্যারে-এর মধ্যে অ্যারে রাখতে পারি, তাই আমরা নেস্টেট অ্যারে তৈরি করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [
   [
     [1, 2, 3],
     [3, 4, 5] 
   ],
   [
     [1, 2, 3],
     [3, 4, 5]
   ]
];

for(let i = 0; i &amp;lt; arr.length; i++){
  for(let j = 0; j &amp;lt; arr[i].length; j++){
    for(let k = 0; k &amp;lt; arr[i][j].length; k++){
        console.log(arr[i][j][k]);
    }
  }
}

//1
//2
//3
//3
//4
//5
.
.
.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;জাভাস্ক্রিপ্ট অ্যারে-এর নির্দিষ্ট কোনো ডাইমেনশন নেই, তাই আমরা জিগজ্যাক মাল্টি-ডাইমেনশনাল অ্যারে তৈরি করতে পারি।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [
   [1, 2, 3, 4, 5],
   [1, 2],
   [1, 2, 3, 4],
   [1, 2, 3]
];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  যেকোনো ভ্যালু অ্যারে কিনা তা চেক করা
&lt;/h2&gt;

&lt;p&gt;জাভাস্ক্রিপ্ট-এ কোনো ভেলু আ্যারে কিনা চেক করার জন্য নিজস্ব মেথড রয়েছে&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Array.isArray()&lt;/code&gt; মেথড ব্যবহার করে
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [1, 2, 3];

Array.isArray(arr);
//true

Array.isArray('string');
//false

Array.isArray({abc: 'xyz'});
///false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>programming</category>
      <category>array</category>
      <category>bangla</category>
    </item>
    <item>
      <title>Google Tag Manager with Next.js (TypeScript/Bangla)</title>
      <dc:creator>Muhid Hossain</dc:creator>
      <pubDate>Sun, 22 Aug 2021 09:39:41 +0000</pubDate>
      <link>https://dev.to/muhidhossain/google-tag-manager-with-next-js-typescript-bangla-31gp</link>
      <guid>https://dev.to/muhidhossain/google-tag-manager-with-next-js-typescript-bangla-31gp</guid>
      <description>&lt;p&gt;এই ব্লগটিতে আমরা শিখব কিভাবে &lt;em&gt;Next.js&lt;/em&gt; প্রোজেক্টে গুগল ট্যাগ ম্যানেজার ইমপ্লিমেন্ট করতে হয়।&lt;/p&gt;

&lt;p&gt;এজন্য আমাদের প্রয়োজন হবে,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Next.js&lt;/em&gt; প্রোজেক্ট&lt;/li&gt;
&lt;li&gt;গুগল ট্যাগ ম্যানেজার অ্যাকাউন্ট&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ধাপসমূহ
&lt;/h4&gt;

&lt;p&gt;১/ &lt;em&gt;.env&lt;/em&gt; ফাইলে গুগল ট্যাগ ম্যানেজার আইডি ডিফাইন করা&lt;br&gt;
২/ &lt;em&gt;pages&lt;/em&gt; ফোল্ডার এর মধ্যে &lt;em&gt;_document.tsx&lt;/em&gt; ফাইল তৈরি করা&lt;br&gt;
৩/ &lt;em&gt;lib/gtm/index.tsx&lt;/em&gt; ফাইল তৈরি করে প্রয়োজনীয় ফাংশন ডিফাইন করা&lt;br&gt;
৪/ &lt;em&gt;_app.tsx&lt;/em&gt; ফাইলে রাউট পরিবর্তন ট্র্যাক করা&lt;/p&gt;
&lt;h4&gt;
  
  
  ১ম ধাপঃ
&lt;/h4&gt;

&lt;p&gt;রুট ডিরেক্টরিতে &lt;em&gt;.env&lt;/em&gt; ফাইলর মধ্যে আপনার প্রোজেক্টের গুগল ট্যাগ ম্যানেজার আইডি অ্যাড করুন।&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;br&gt;
GTM-XXXXXXX এর স্থলে আপানর গুগল ট্যাগ ম্যানেজার আইডি লিখুন।
&lt;h4&gt;
  
  
  ২য় ধাপঃ
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;pages&lt;/em&gt; ফোল্ডারের মধ্যে &lt;em&gt;_document.tsx&lt;/em&gt; ফাইল তৈরি করে গুগল ট্যাগ ম্যানেজার কনফিগার করুন।&lt;/p&gt;

&lt;p&gt;&lt;em&gt;_document.tsx&lt;/em&gt; সম্পর্কে বিস্তারিত জানতে &lt;em&gt;&lt;a href="https://nextjs.org/docs/advanced-features/custom-document"&gt;Next.js documentation&lt;/a&gt;&lt;/em&gt; পড়তে পারেন।&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h4&gt;
  
  
  সমস্যাঃ
&lt;/h4&gt;

&lt;p&gt;গুগল ট্যাগ ম্যানেজার শুধুমাত্র পেইজ রিলোড করলে ট্যাগ ফায়ার করে। যেহেতু &lt;em&gt;React/Next.js&lt;/em&gt; এরমতো সিঙ্গেল পেইজ অ্যাপ্লিকেশানে রাউট পরিবর্তন হলেও পেইজ রিলোড হয় না। ফলে প্রথমবার ওয়েবসাইটে ঢুকলে ট্যাগ ফায়ার হয় পরবর্তীতে রাউট পরিবর্তন করলেও ট্যাগ ফায়ার হয় না।&lt;/p&gt;

&lt;h4&gt;
  
  
  সমাধানঃ
&lt;/h4&gt;

&lt;p&gt;এই সমস্যার থেকে পরিত্রান পাওয়ার জন্য আমাদেরকে ম্যানুয়াল ভাবে প্রতিবার রাউট পরিবর্তন হলে নিম্নউক্ত &lt;em&gt;pageview&lt;/em&gt; ফাংশন কল করতে হবে এবং গুগল ট্যাগে হিস্টরি চেইঞ্জ ট্রিগার অ্যাড করতে হবে।&lt;/p&gt;

&lt;h5&gt;
  
  
  হিস্টরি চেইঞ্জে ট্রিগারঃ &lt;em&gt;&lt;a href="https://support.google.com/tagmanager/answer/7679322?hl=en"&gt;documentation&lt;/a&gt;&lt;/em&gt;
&lt;/h5&gt;

&lt;h4&gt;
  
  
  ৩য় ধাপঃ
&lt;/h4&gt;

&lt;p&gt;রুট ডিরেক্টরিতে &lt;em&gt;lib/gtm&lt;/em&gt; ফোল্ডার তৈরি করে তার মধ্যে &lt;em&gt;index.tsx&lt;/em&gt; ফাইল তৈরি করুন এবং &lt;em&gt;pageviews&lt;/em&gt; এবং &lt;em&gt;events&lt;/em&gt; ট্রাক করার জন্য কাস্টমে ফাংশন লিখুন।&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h4&gt;
  
  
  ৪য় ধাপঃ
&lt;/h4&gt;

&lt;p&gt;এখন রাউট পরিবর্তনে pageview ফাংশন কল করার জন্য _app.tsx ফাইলে useEffect হুক ব্যবহার করুন।&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;br&gt;
ব্যাস হয়ে গেলো ইমপ্লিমেন্টেশন।

</description>
    </item>
  </channel>
</rss>
