Arrays ও Array Methods

লেসন ৩০ / ৪৪

Array তৈরি ও Access

// তৈরি
let fruits = ["আম", "জাম", "লিচু"];
let numbers = [1, 2, 3, 4, 5];
let mixed = [1, "hello", true, null];

// Access
fruits[0]             // "আম"
fruits[fruits.length - 1]  // শেষ element
fruits.at(-1)         // "লিচু" (ES2022)

// Length
fruits.length         // 3

// পরিবর্তন
fruits[1] = "পেয়ারা";

Mutating Methods (array পরিবর্তন করে)

let arr = [1, 2, 3];

arr.push(4);        // শেষে যোগ: [1,2,3,4]
arr.pop();          // শেষেরটা সরায়: [1,2,3]
arr.unshift(0);     // শুরুতে যোগ: [0,1,2,3]
arr.shift();        // শুরুরটা সরায়: [1,2,3]

arr.splice(1, 1);           // index 1 থেকে ১টি মুছে: [1,3]
arr.splice(1, 0, "new");    // index 1 এ যোগ: [1,"new",3]

arr.sort();             // sorted (default: string)
arr.sort((a,b) => a-b); // ascending number
arr.sort((a,b) => b-a); // descending

arr.reverse();          // উল্টো

Non-Mutating Methods (নতুন array return করে)

let nums = [1, 2, 3, 4, 5];

// map — প্রতিটি element রূপান্তর
let doubled = nums.map(n => n * 2);
// [2, 4, 6, 8, 10]

// filter — শর্ত অনুযায়ী রাখে
let evens = nums.filter(n => n % 2 === 0);
// [2, 4]

// reduce — একটি single value এ নামিয়ে আনে
let sum = nums.reduce((total, n) => total + n, 0);
// 15

// forEach — শুধু loop (return নেই)
nums.forEach(n => console.log(n));

// find — প্রথম match
let found = nums.find(n => n > 3);
// 4

// findIndex
let idx = nums.findIndex(n => n > 3);
// 3

// some — কোনো একটি শর্ত পূরণ করে?
nums.some(n => n > 4);  // true

// every — সবগুলো শর্ত পূরণ করে?
nums.every(n => n > 0); // true

// includes
nums.includes(3);       // true
nums.indexOf(3);        // 2

// join
["a","b","c"].join("-"); // "a-b-c"

// concat / spread
[1,2].concat([3,4]);    // [1,2,3,4]
[...[1,2], ...[3,4]];   // [1,2,3,4]

// slice (copy অংশ)
nums.slice(1, 3);       // [2, 3]

// flat (nested array সমতল করে)
[1, [2, [3, [4]]]].flat(2);  // [1, 2, 3, [4]]

Chaining

let result = [1, 2, 3, 4, 5, 6]
    .filter(n => n % 2 === 0)  // [2, 4, 6]
    .map(n => n * 10)           // [20, 40, 60]
    .reduce((a, b) => a + b);   // 120

Destructuring

let [first, second, ...rest] = [1, 2, 3, 4, 5];
console.log(first);  // 1
console.log(rest);   // [3, 4, 5]

// Swap
let a = 1, b = 2;
[a, b] = [b, a];
// a=2, b=1