ایک ڈویلپر کے لیے نہ صرف کاموں کو مکمل کرنا ضروری ہے، بلکہ کاموں کو زیادہ موثر انداز میں کرنا بھی ضروری ہے۔ آج JavaScript میں کئی لائبریریاں دستیاب ہیں جو ڈویلپرز کے لیے متغیرات کے ساتھ کام کرنا آسان بناتی ہیں۔ اس ٹیوٹوریل میں ہم سیکھیں گے کہ لوڈاش لائبریری کے سب سے عام فنکشنز کو کیسے استعمال کیا جائے۔
اگر آپ نے ابھی تک لوڈش کو آزمایا نہیں ہے، تو اب وقت آگیا ہے۔ لوڈاش ایک عصری جاوا اسکرپٹ یوٹیلیٹی پیکج ہے جو صفوں، انٹیجرز، آبجیکٹس، ٹیکسٹس اور ڈیٹا کی دیگر اقسام کے ساتھ کام کرنا آسان بناتا ہے۔
یہ مختلف قسم کی اشیاء سے نمٹنے میں آپ کی مدد کرے گا اور عام طریقوں کو کوڈ کرنے کی ضرورت کو ختم کرکے آپ کا وقت بچائے گا۔ آپ کا کوڈ کم لائنوں کے ساتھ صاف ہو جائے گا اور تمام براؤزرز میں کام کرے گا۔ اگر آپ پہلے ہی اس کا استعمال نہیں کر رہے ہیں، تو آپ کو اس پر غور کرنا چاہیے۔
لوڈاش کو نہ اپنانا ہمارے JavaScript کوڈ بیسز کے لیے ایک بہت بڑا نقصان ہے۔ یہ کام میں ہمارے سامنے آنے والے عام چیلنجوں کا ایک بگ فری اور خوبصورت حل ہے، اور اس کا استعمال صرف ہمارے کوڈ کو مزید پڑھنے کے قابل اور قابل انتظام بنائے گا۔
آئیے لوڈاش کے کچھ زیادہ مقبول (یا نہیں!) فنکشنز کا جائزہ لیں اور دریافت کریں کہ یہ لائبریری کتنی مفید اور خوبصورت ہے۔
1. _.sortedUniq
تمام ڈپلیکیٹ اقدار اس کے ساتھ واپس نہیں کی جائیں گی۔ کیونکہ یہ صرف ترتیب شدہ صفوں کے لیے ہے، یہ بنیادی طور پر رفتار کی وجوہات کے لیے استعمال ہوتا ہے۔ یہ صرف اس صورت میں مفید ہے جب آپ ایک بڑی صف کے ساتھ کام کر رہے ہیں۔ اگر آپ رفتار کو بہتر بنانا چاہتے ہیں تو اپنی صف کو ترتیب دیں اور ایسے طریقے استعمال کریں جو ترتیب شدہ صفوں کے ساتھ بہتر کام کریں۔
لوڈاش کے بہت سے دوسرے افعال ہیں جو اس سے ملتے جلتے ہیں۔ آپ دیکھ سکتے ہیں۔
2. _.کم کریں۔
_.reduce فلٹر فنکشن کی طرح ہے۔ فرق صرف یہ ہے کہ آپ کے پاس لوٹائی گئی آبجیکٹ کی شکل کو منتخب کرنے کا اختیار ہے۔ یہ عام بات ہے، اگر آپ نہیں سمجھتے کہ میں کیا کہہ رہا ہوں؛ اس کے لئے ایک مثال ہے.
خلاصہ یہ کہ، ہم ایک نئی چیز واپس کرتے ہیں جس میں صارفین کی عمر کے لحاظ سے درجہ بندی کی گئی ہے، لیکن صرف 18 سے 59 سال کی عمر کے لوگوں کے لیے۔ یہ لوڈاش مددگار فنکشن سب سے زیادہ استعمال ہونے والوں میں سے ایک ہے۔ یہ ES6 میں بھی شامل ہے۔ میں دو عام غلطیوں کی نشاندہی کرنا بھی چاہوں گا: فنکشن کے اختتام پر نتیجہ واپس کرنا یاد رکھیں، اور تیسرے پیرامیٹر (یہاں) کے طور پر نتیجہ کے لیے ڈیفالٹ ویلیو فراہم کریں۔
3. _.حاصل کریں اور ._سیٹ کریں۔
اس کے لیے، میں آپ کو دو فنکشن دکھا کر کسی حد تک دھوکہ دوں گا جو تقریباً ایک ہی چیز کو انجام دیتے ہیں۔ _.get کسی آبجیکٹ سے پراپرٹی ویلیو واپس کرتا ہے، اور _.set، ٹھیک ہے، آپ نے اندازہ لگایا ہے، قدر کے ساتھ پراپرٹی سیٹ کریں۔ کچھ بھی منفرد نہیں، سوائے اس کے کہ آپ کسی پراپرٹی تک اس کے راستے سے رسائی حاصل کر سکتے ہیں۔
آئیے ایک مثال دیکھتے ہیں۔
اگر _.set کو کال کرنے کے دوران راستہ موجود نہیں ہے، تو یہ تیار ہو جائے گا۔ مزید کوئی "غیر وضاحتی غلطیوں کی خاصیت 'آئٹمز' سیٹ نہیں کر سکتا"۔ اگر راستہ موجود نہیں ہے تو، _.get غلطی کی بجائے غیر وضاحتی واپس آئے گا۔ اگر راستہ غیر متعینہ پر حل کرتا ہے، تو آپ ڈیفالٹ ویلیو (تیسرا پیرامیٹر) بھی فراہم کر سکتے ہیں۔
4. _.تلاش کریں۔
کسی ایک شے کو تلاش کرنے کے لیے کسی صف میں گھومنے کے بجائے، ہم _.find استعمال کر سکتے ہیں۔ یہ اچھی بات ہے، لیکن یہ واحد چیز نہیں ہے جو تلاش کر سکتا ہے۔ کوڈ کی ایک لائن کے ساتھ، آپ متعدد خصوصیات کو استعمال کر کے ایک آبجیکٹ کو بھی دریافت کر سکتے ہیں۔ اس کی جانچ پڑتال کر!
5. _.کی کے ذریعے
میرے پسندیدہ میں سے ایک _.keyBy ہے۔ کسی خاص وصف کے ساتھ کسی چیز کو حاصل کرنے کی کوشش کرتے وقت یہ کافی مفید ہے۔ فرض کریں کہ ہمارے پاس 100 بلاگ اندراجات ہیں اور ہم ایک کو "34abc" کے ساتھ حاصل کرنا چاہتے ہیں۔ ہم اسے کیسے کرنے جا رہے ہیں؟ آئیے دیکھیں کیا ہوتا ہے! اگر کوئی سرور اسے ایک صف کے طور پر فراہم کرتا ہے تو یہ طریقہ آپ کو آبجیکٹ جمع کرنے کا بندوبست کرنے میں مدد کر سکتا ہے۔ ایک فنکشن کو دوسری دلیل کے طور پر بھی استعمال کیا جا سکتا ہے۔
6. _.ہر ایک کے لیے
یہ طریقہ ایک ایک کرکے اشیاء کی ایک صف پر اعادہ کرے گا، آپ کو جو بھی منطق آپ چاہتے ہیں کرنے کی اجازت دیتا ہے۔ اس پہلی مثال میں، میں صارف کی اشیاء کی فہرست کو لوپ کروں گا، ان کے پہلے اور آخری ناموں کو ملا کر ایک نئی پراپرٹی بناؤں گا جس کا نام fullName ہے۔
ان میں سے ہر ایک دو پیرامیٹرز کو قبول کرتا ہے۔ جس صف کو ہم لوپ کر رہے ہیں وہ پہلا پیرامیٹر ہے۔ دوسری دلیل ایک iterate فنکشن ہے، جس میں پہلا پیرامیٹر انفرادی آئٹم کا حوالہ ہے اور دوسرا تکرار کا موجودہ انڈیکس ہے۔
7. _.نقشہ
نقشہ، جیسے forEach، قدروں کی ایک صف میں اعادہ کرتا ہے۔ دوسری طرف، نقشہ فنکشن، iterate فنکشن کے ذریعے فراہم کردہ اقدار کی ایک نئی صف لوٹاتا ہے۔ ہم صارفین کا وہی مجموعہ استعمال کر رہے ہیں جیسا کہ یہاں ہماری ہر مثال میں ہے۔ ہم ایک نیا متغیر بنانے کے لیے _.map کا استعمال کر سکتے ہیں جس میں تمام صارفین کے مکمل ناموں کی ایک چپٹی صف ہے۔
8. _.فرق
فرق فنکشن اقدار کی ایک نئی صف پیدا کرے گا جو پہلی اور دوسری صفوں کے درمیان مختلف ہے۔ یہ نوٹ کرنا ضروری ہے کہ دلائل کے مقامات نتائج کو متاثر کرتے ہیں۔
9. _.حاصل کریں۔
_.get() فنکشن کسی چیز کے اندر کسی عنصر کو تلاش کرنے میں ہماری مدد کر سکتا ہے۔ اگر فراہم کردہ راستے پر کوئی عنصر نہیں ملتا ہے تو ہم _.get() فنکشن کو واپس کرنے کے لیے ڈیفالٹ ویلیو سیٹ کر سکتے ہیں۔ _.get() فنکشن تین پیرامیٹرز لیتا ہے، جن میں سے پہلا وہ چیز ہے جس سے ہم عنصر حاصل کرنا چاہتے ہیں۔ راستہ دوسرا ہے۔ تیسری قدر وہ ڈیفالٹ ویلیو ہے جسے ہم واپس کرنا چاہتے ہیں اگر کوئی عنصر موجود نہ ہو۔
10. _.تلاش کریں۔
_find() فنکشن _.get() طریقہ سے مماثل دکھائی دے سکتا ہے۔ _.find() فنکشن، جیسے _.get() طریقہ، تین پیرامیٹرز کو قبول کرتا ہے۔ تاہم، _.get() طریقہ کے برعکس، پہلی دلیل ایک صف یا آبجیکٹ ہو سکتی ہے۔ دوسری دلیل اس فنکشن کی وضاحت کرتی ہے جسے ہر تکرار پر بلایا جائے گا۔ تیسرا ان پٹ مجموعہ کا ابتدائی اشاریہ ہے۔ کیونکہ _.find() فنکشن مجموعہ میں ہر ایک عنصر پر اعادہ کرتا ہے۔
11. _.گروپ بائے
فنکشن (یا تصادفی طور پر منتخب کردہ پراپرٹی کا نام) کے نتیجے میں ایک آبجیکٹ بنائیں، جس میں ہر قدر ایک ہی کلید کے ساتھ آبجیکٹ کی ایک صف ہو۔
12. _.سیٹ
طریقہ _.set() طریقہ _.get() کا الٹا ہے۔ یہ دیے گئے راستے پر کسی عنصر کی قدر کو بدل دے گا۔ آبجیکٹ یا سرنی پہلا پیرامیٹر ہے، راستہ دوسرا ہے، اور جو قدر آپ سیٹ کرنا چاہتے ہیں وہ تیسری ہے۔
13. _.ضم کریں۔
یہ Object.assign کی طرح کام کرتا ہے، سوائے اس کے کہ یہ بنیادی ڈھانچے میں گہرائی میں دہراتی ہے تاکہ گہری اشیاء کو تبدیل کرنے کی بجائے اپ ڈیٹ کرے۔
14. ._deburr
یہ ایک سیدھی سی مثال ہے۔ تمام "اختلاطی نشانات" کو ہٹا دیا جاتا ہے۔ اس طرح "é" "e" بن جاتا ہے۔ جب عالمگیریت اور لوکلائزیشن ہو، تو تلاش کے افعال کے لیے متن کو ڈیبرر کرنا ایک اچھا عمل ہے۔
15. _.ڈیباؤنس
یہ لوڈاش کی سب سے مؤثر حکمت عملیوں میں سے ایک ہے۔ یہ سمجھنا بھی مشکل ہو سکتا ہے کہ یہ کیا کرتا ہے اور آپ کو اسے کب استعمال کرنا چاہیے۔ _.debounce() طریقہ ایک فنکشن لوٹاتا ہے۔ _.debounce() طریقہ کا فنکشن اس وقت تک درخواست میں تاخیر کرے گا جب تک کہ فنکشن کو آخری بار شروع کرنے کے بعد سے ملی سیکنڈز کی ایک مخصوص تعداد گزر نہ جائے۔
نتیجہ
لوڈاش جاوا اسکرپٹ زبان کی ایک طاقتور توسیع ہے۔ کم سے کم کوشش کے ساتھ، کوئی مختصر اور موثر کوڈ بنا سکتا ہے۔ لوڈاش بھی مکمل طور پر ماڈیولر ہے۔ اگرچہ اس کی کچھ فعالیتیں بالآخر فرسودہ ہو سکتی ہیں، مجھے یقین ہے کہ یہ JS زبان کے ارتقاء کو آگے بڑھاتے ہوئے اب بھی ڈویلپرز کو بے شمار فوائد فراہم کرے گا۔
مجھے امید ہے کہ لوڈاش کی یہ چند صلاحیتیں آپ کو یہ دیکھنے میں مدد کریں گی کہ جب صفوں، اشیاء اور مجموعوں کے ساتھ کام کرتے ہوئے لوڈاش کتنا طاقتور ہو سکتا ہے۔ آپ ملاحظہ کر سکتے ہیں۔ دستاویزات دوسرے اختیارات کی بہتات کو تلاش کرنے کے لئے جو اسے پیش کرنا ہے۔
جواب دیجئے