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 |
اردو: فنکشن کا نام (بغیر قوسین) بطور دلیل دیں۔ یہ طریقے نئی فہرست دیتے ہیں — اصل نہیں بدلتے۔