۶ قطعه کد جاوا اسکریپت برای حل مشکلات رایج | به زبان ساده

جاوا اسکریپت نیز همانند بسیاری از زبانهای برنامهنویسی برخی نواقص و معایبی دارد. برخی تابعهای داخلی یا ساختار درونی جاوا اسکریپت وجود دارند که ممکن است آنها را عجیب بدانید. خروجی برخی ورودیهای ابتدایی نیز گاهی اوقات عجیب و غیر منتظره هستند. حتی چیزهای سادهای مانند حلقهها نیز گاهی اوقات برخلاف انتظار ما رفتار میکنند. با این که جاوا اسکریپت گاه به گاه رفتار عجیبی از خود بروز میدهد، اما همچنان یکی از پرکاربردترین زبانهای برنامهنویسی محسوب میشود. برخی اوقات ما تنها به یک کمک کوچک برای وظایف تکراری و ساده خود نیاز داریم که به صورت هرروزه اجرا میکنیم. در این مقاله 6 قطعه کد جاوا اسکریپت برای حل مشکلات رایج ارائه کردهایم که به اجرای روانتر و سریعتر این وظایف تکراری روزمره کمک میکنند.
نکته: در بسیاری از این مثالها از ES6 استفاده شده و جاوا اسکریپت ساده نیستند. شما بسته به فریمورکی که مورد استفاده قرار میدهید، ممکن است بتوانید یا نتوانید از کدهای ES6 استفاده کنید.
یافتن یک شیء خاص در یک آرایه از اشیا
این مسئله احتمالاً یکی از رایجترین وظایفی است که باید در دنیای جاوا اسکریپت اجرا کنید. تکرار روی یک آرایه از اشیا برای یافتن یک شیء خاص یک کار متداول محسوب میشود. متد find در اینجا به کمک ما میآید. کافی است معیار انتخاب را با استفاده از تابع بینام به صورت آرگومان به این متد بدهیم:
let customers = [ { id: 0, name: 'paul' }, { id: 1, name: 'jeff' }, { id: 2, name: 'mary' } ]; let customer = customers.find(cust => cust.name === 'jeff'); console.log(customer); --> { id: 1, name: 'jeff' }
تعریف حلقه روی کلیدها و مقادیر شیء
برخی اوقات، ساختمان داده شما ممکن است یک شیء پیچیده باشد که شامل دستهای از جفتهای کلید/مقدار است. تکرار کردن روی هر جفت از این مقادیر بسته به زبانی که استفاده میکنید، در نگاه نخست ممکن است عجیب باشد، اما زمانی که به استفاده از تابعهای object عادت کنید، کاری سرراست خواهد بود.
پس از آن که کلیدهای شیء را به دست آوردید، میتوانید روی کلیدها و مقادیر به صورت همزمان بچرخید. در این مثال، به هر جفت با استفاده از متغیرهای key و value در داخل حلقه دسترسی پیدا میکنیم.
let myObject = { one: 1, two: 2, three: 3 }; Object.keys(myObject).forEach((key, value) => { //...do something console.log(key, value); });
فیلتر کردن آرایه اشیا بر مبنای یک شرط
اگر یک آرایه بزرگ از دادهها داشته باشید و بخواهید آیتمها را بر مبنای یک شرط خاص فیلتر کنید، میتوانید به سادگی از تابع filter استفاده کنید. در این مثال ما یک آرایه از مسیرهای فایل داریم. برخی فایلها در dir1 هستند، در حالی که برخی دیگر در dir2 حضور دارند. فرض کنید میخواهیم تنها یک دایرکتوری خاص را فیلتر کنیم:
let data = [ "files/dir1/file", "files/dir1/file2", "files/dir2/file", "files/dir2/file2" ]; let filteredData = data.filter(path => path.includes('dir2')); console.log(filteredData); --> [ 'files/dir2/file', 'files/dir2/file2' ]
فیلتر کردن یک دایرکتوری خاص درون آرایه فوق از مسیرها کار آسانی است. با تعیین این که رشته مسیر باید شامل رشته dir2 باشد، هر مسیری که شامل این رشته نباشد را حذف میکنیم. به خاطر داشته باشید که هر تابعی که به فیلتر ارسال میکنید، باید مقدار true برای آیتم موجود در نتیجه داشته باشد.
انتساب متغیر به روش تخریب
انتساب متغیرها از یک آرایه به صورت یک به یک کاری زمانبر و نامعقول است. در این موارد کافی است از «انتساب تخریب» (destructuring assignment) برای اجرای سریعتر و آسانتر این کار استفاده کنیم:
let profile = ['bob', 34, 'carpenter']; let [name, age, job] = profile; console.log(name); --> 'bob'
انتساب کلید به یک شیء با نام یکسان
زمانی که کلیدها را به یک شیء انتساب میدهیم، اگر کلید دارای نام یکسانی با متغیری باشد که شامل مقداری است میخواهیم انتساب بدهیم، میتوانیم از انتساب مقدار به طور کامل صرفنظر کنیم. به این ترتیب دیگر لازم به تکرار کردن کارها نیست. به مثال زیر توجه کنید که در آن از نوعی داده مشابه مثال قبلی استفاده کردهایم:
let name = 'bob'; let age = 34; let job = 'carpenter'; // instead of this let myObject1 = { name: name, age: age, job: job }; // do this let myObject2 = { name, age, job }; console.log(myObject2); --> { name: 'bob', age: 34, job: 'carpenter' }
استفاده از عملگر اسپرد (Spread)
عملگر اسپرد (spread) به ما امکان میدهد که مقادیر یک آرایه را استخراج کنیم. از این عملگر میتوان برای تبدیل یک آرایه به لیستی از آرگومانها و یا حتی ترکیب دو آرایه با همدیگر استفاده کرد. همچنین میتوانید از آن برای تشکیل یک لیست از آرگومانها در یک تابع نیز استفاده کنید. به مثال زیر توجه کنید:
let data = [1,2,3,4,5]; console.log(...data); --> 1 2 3 4 5 let data2 = [6,7,8,9,10]; let combined = [...data, ...data2]; console.log(...combined); --> 1 2 3 4 5 6 7 8 9 10 console.log(Math.max(...combined)); --> 10
در مثال اول، طرز کار عملگر اسپرد روی یک آرایه و تبدیل هر آیتم آن به یک عنصر منفرد را نمایش دادیم. مثال دوم محتوای دو آرایه را با هم ترکیب میکند و یک آرایه موقت جدید با استفاده از محتوای هر دو آرایه ایجاد میکند. مثال آخر شیوه استفاده از عملگر اسپرد برای تبدیل یک آرایه به لیستی از آرگومانهای تابع را نشان میدهد. Math.max بزرگترین عدد را در لیستی از آرگومانهای ارسالی بازگشت میدهد. یکی از این آرگومانها عدد 10 است که بزرگترین عدد محسوب میشود.
سخن پایانی
از این که این مقاله را تا انتها مطالعه کردید، متشکریم. امیدواریم از یادگیری این کدهای پرتکرار در جاوا اسکریپت منتفع شده باشید و بتوانید این کارهای تکراری را به روشی آسانتر و سریعتر حل کنید.