Skip to content

4. Array Methods — فہرست کے طریقے

Difficulty: Intermediate — متوسط
Time: ~25 minutes


تبدیل — map

Transform every element and return a new list:

متغیر اعداد = [1, 2, 3, 4, 5];

فنکشن دوگنا(ن) { واپس ن * 2; }
لکھو(اعداد.تبدیل(دوگنا));    // [2, 4, 6, 8, 10]

فنکشن مربع(ن) { واپس ن ** 2; }
لکھو(اعداد.تبدیل(مربع));     // [1, 4, 9, 16, 25]

اردو: .تبدیل() ہر عنصر کو فنکشن سے گزارتا ہے اور نئی فہرست دیتا ہے — اصل نہیں بدلتی۔


چھانو — filter

Keep only elements for which the function returns true:

متغیر اعداد = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

فنکشن جفت(ن) { واپس ن % 2 == 0; }
لکھو(اعداد.چھانو(جفت));    // [2, 4, 6, 8, 10]

فنکشن بڑا_5(ن) { واپس ن > 5; }
لکھو(اعداد.چھانو(بڑا_5));  // [6, 7, 8, 9, 10]

اردو: .چھانو() شرط پوری کرنے والے عناصر رکھتا ہے — باقی نکال دیتا ہے۔


اکٹھا — reduce

Combine all elements into a single value:

متغیر اعداد = [1, 2, 3, 4, 5];

// Sum all — جمع
فنکشن جوڑو(کل, ن) { واپس کل + ن; }
لکھو(اعداد.اکٹھا(جوڑو, 0));    // 15

// Product — ضرب
فنکشن ضرب(کل, ن) { واپس کل * ن; }
لکھو(اعداد.اکٹھا(ضرب, 1));     // 120

اردو: .اکٹھا(فنکشن, ابتدائی_قدر) — ہر عنصر پر فنکشن چلتا ہے۔ دو پیرامیٹر: کل (جمع ہونے والی قدر) اور ن (موجودہ عنصر)۔


ہر_ایک — forEach

Run a function on each element:

متغیر پھل = ["سیب", "کیلا", "آم"];
فنکشن پرنٹ_پھل(پ) { لکھو(`پھل: ${پ}`); }
پھل.ہر_ایک(پرنٹ_پھل);

Output:

پھل: سیب
پھل: کیلا
پھل: آم

اردو: .ہر_ایک() ہر عنصر پر فنکشن چلاتا ہے — نئی فہرست نہیں دیتا۔ صرف اثرات (side effects) کے لیے۔


تلاش اور تلاش_مقام — find / findIndex

متغیر اعداد = [5, 12, 8, 130, 44];

فنکشن بڑا_10(ن) { واپس ن > 10; }
لکھو(اعداد.تلاش(بڑا_10));          // 12   (first match — پہلا ملنے والا)
لکھو(اعداد.تلاش_مقام(بڑا_10));     // 1    (index of first match)

سب اور کوئی — every / some

متغیر اعداد = [2, 4, 6, 8, 10];

فنکشن جفت(ن) { واپس ن % 2 == 0; }
لکھو(اعداد.سب(جفت));     // True  — all even (سب جفت)

فنکشن بڑا_8(ن) { واپس ن > 8; }
لکھو(اعداد.کوئی(بڑا_8));  // True  — at least one > 8

فنکشن بڑا_100(ن) { واپس ن > 100; }
لکھو(اعداد.سب(بڑا_100));  // False
لکھو(اعداد.کوئی(بڑا_100)); // False

پھیلا_تبدیل — flatMap

Map then flatten (one level):

فنکشن دوگنا_فہرست(ن) { واپس [ن, ن * 2]; }
لکھو([1, 2, 3].پھیلا_تبدیل(دوگنا_فہرست));
// [1, 2, 2, 4, 3, 6]

Chaining — زنجیر

متغیر طلباء = [
    { نام: "احمد",  نمبر: 85 },
    { نام: "فاطمہ", نمبر: 92 },
    { نام: "علی",   نمبر: 55 },
    { نام: "زینب",  نمبر: 78 }
];

// Get names of passing students (نمبر >= 60)
فنکشن کامیاب(ط) { واپس ط.نمبر >= 60; }
فنکشن صرف_نام(ط) { واپس ط.نام; }

متغیر کامیاب_نام = طلباء.چھانو(کامیاب).تبدیل(صرف_نام);
لکھو(کامیاب_نام);    // ['احمد', 'فاطمہ', 'زینب']

اردو: .چھانو(...).تبدیل(...) — پہلے چھانو، پھر تبدیل کرو۔


Practical Example: Grade Analysis — عملی مثال: نمبروں کا تجزیہ

متغیر نمبرات = [72, 88, 55, 91, 63, 45, 78, 95, 61, 83];

فنکشن کامیاب(ن) { واپس ن >= 60; }
فنکشن ناکام(ن) { واپس ن < 60; }
فنکشن جمع_ک(ک, ن) { واپس ک + ن; }

لکھو(`کامیاب: ${نمبرات.چھانو(کامیاب).لمبائی}`);
لکھو(`ناکام: ${نمبرات.چھانو(ناکام).لمبائی}`);

متغیر اوسط = نمبرات.اکٹھا(جمع_ک, 0) / نمبرات.لمبائی;
لکھو(`اوسط: ${گول(اوسط, 1)}`);
لکھو(`زیادہ ترین: ${زیادہ(نمبرات)}`);
لکھو(`کم ترین: ${کم(نمبرات)}`);

Quick Reference — فوری حوالہ

Urdu Method English Meaning
.تبدیل(ف) .map(f) transform each element
.چھانو(ف) .filter(f) keep matching elements
.اکٹھا(ف, ابتدا) .reduce(f, init) combine to one value
.ہر_ایک(ف) .forEach(f) run f on each (no return)
.تلاش(ف) .find(f) first matching element
.تلاش_مقام(ف) .findIndex(f) index of first match
.سب(ف) .every(f) true if all match
.کوئی(ف) .some(f) true if any match
.پھیلا_تبدیل(ف) .flatMap(f) map then flatten

اردو: فنکشن کا نام (بغیر قوسین) بطور دلیل دیں۔ یہ طریقے نئی فہرست دیتے ہیں — اصل نہیں بدلتے۔


← Previous: Objects | Next: String Methods →