تحلیل داده
صفحه اصلی / آموزش برنامه نویسی / آموزش LINQ برای جاوا اسکریپت

آموزش LINQ برای جاوا اسکریپت

LINQ برای جاوا اسکریپت

با آموزش LINQ برای جاوا اسکریپت با شما هستیم،این مقاله قابلیت های اولیه LINQ اعمال شده روی آرایه های جاوا اسکریپت را مرور می کند.LINQ کامپوننتی از Microsoft .NET Framework است که با اضافه کردن عبارات کوئری زبان را توسعه می دهد، که به دستورات SQL وابسته است، و می تواند به راحتی داده ها را از آرایه ها گرفته و پردازش نماید. API تعبیه شده جاوا اسکریپت از ویرایش ECMAScript 5th با مجموعه بسیار محدودی از متدهای تکرار: forEach، some، filter، map، reduce و reduceRight می آید.

این متدها قابل پشتیبانی در همه مرورگرها نیستند، متفاوت از LINQ API بوده و بسیاری از قابلیت هایی که با LINQ می آید را پوشش نمی دهند. این مقاله پیاده سازی بیش از ۳۰ متد Enumerable از .NET 4.0 در جاوا اسکریپت شامل Aggregations، Iterations، Predicators و Selectors را برای افزودن قدرت و انعطاف پذیری کوئری های سبک LINQ به کد جاوا اسکریپت قدیمی را پوشش می دهد.

پیش زمینه

جاوا اسکریپت به طور ذاتی از وراثت کلاس پشتیبانی نمی کند و از طریق prototype به طور نامرتبی آن را پشتیبانی می کند. امکان شبیه سازی بسیاری از ویژگی های مبتنی بر کلاس در جاوا اسکریپت وجود دارد. Prototypeها ویژگی های رایج شی گرایی را برای زبان برنامه نویسی شی گرا فراهم می نماید. به این معنی که برای اضافه کردن قابلیت های بیشتر به API تعبیه شده، می توان prototype کلاس را توسعه داد.

همه آرایه ها در جاوا اسکریپت از شی Array ارث بری می کنند و متدها و property ها را از Array.prototype به ارث می برند. تغییرات روی شی Array prototype به همه آرایه ها منتشر می شود مگر اینکه propertyها و متدهای مربوط به این تغییرات در این زنجیره prototype، override شده باشند.

برای اضافه کردن قابلیت LINQ به جاوا اسکریپت، تمام کاری که ما باید انجام دهیم اضافه کردن این متدها به شی Array.prototype است.

برای مثال، API جاوا اسکریپت متد union ندارد، اگرچه متد concat را تقریبا با همان قابلیت دارد. با قرار دادن Array.prototype.union در متد تعبیه شده concat، همه آرایه ها جاوا اسکریپت می توانند متد union هم داشته باشند.

(متد صحیح union از المنت های گسسته از اجتماع دو دنباله استفاده می کند.)

قبل از شروع

بیشتر متدهای LINQ، به توابع EqualityComparer، SortComparer، Predicate یا Selector برای اعمال هر المنتی درون یک آرایه نیاز دارند. در .NET این کار با ارسال Delegate به متد انجام می شود. به عنوان مثال این مدلی است که متد Select باید در C# ظاهر شود.

در مثال بالا t => t *2 یک Lambda expression است که برای ضرب هریک از المنت های آرایه در ۲ به عنوان یک تابع بی نام (delegate) رفتار می کند. اگرچه، از آن جایی که جاوا اسکریپت با عبارات Lambda نمی آید، توابع بی نام در جاوا اسکریپت با استفاده از function(){ … } تعریف می شوند.

این مدلی است که متد select در جاوا اسکریپت ظاهر می شود:

اینجا توابع پیش فرض EqualityComparer، SortComparer، Predicate یا Selector را داریم:

LINQ Selector های جاوا اسکریپت

Select

هر یک از المنت های یک دنباله را به شکل جدیدی project می کند.

مثال:

SelectMany

هر یک از المنت های یک دنباله را به یک آرایه project کرده و دنباله های نتیجه را در آخر به شکل یک آرایه درمی آورد:

مثال:

Take

تعداد مشخصی از المنت های پیوسته را از آغاز یک دنباله برمی گرداند.

مثال:

Skip

از روی تعداد مشخصی از المنت های دنباله گذشته و آن ها را نادیده گرفته و المنت های باقیمانده را برمی گرداند.

مثال:

First

اولین المنت دنباله را برمی گرداند:

مثال:

Last

آخرین المنت دنباله را برمی گرداند.

مثال:

Union

اجتماع دو دنباله را با استفاده از equality comparer پیش فرض تولید می کند.

مثال:

Intersect

اشتراک دو دنباله را تولید می نماید.

مثال:

Except

تفاضل دو دنباله را محاسبه می نماید.

مثال:

Distinct

المنت های غیرتکراری از یک دنباله را با استفاده از equality comparer پیش فرض جهت مقایسه مقادیر برمی گرداند.

مثال:

Zip

یک تابع به خصوص را روی المنت های مربوط به هر دو دنباله اعمال می کند که یک دنباله به عنوان نتیجه تولید می کند.

مثال:

IndexOf

اندیس اولین جایی که یک مقدار آمده است را در یک آرایه یک بعدی به ما می دهد.

مثال:

LastIndexOf

اندیس آخرین جایی که یک مقدار در یک آرایه یک بعدی آمده است را به ما می دهد.

مثال:

Remove

یک شی مشخصی از آرایه را در اولین جایی که آمده است، حذف می کند.

مثال:

RemoveAll

تمام المنت هایی که با شرطی که توسط predicate مشخص شده مطابقت دارند، حذف می کند.

مثال:

OrderBy

المنت های یک دنباله را در جهت صعودی براساس یک کلید مرتب می کند.

مثال:

OrderByDescending

المنت های یک دنباله را در جهت نزولی مرتب می کند.

مثال:

ThenBy/ThenByDescending

یک مرتب سازی با تاخیر روی المنت های یک دنباله را با استفاده از یک مقایسه گر مشخص در جهت صعودی/نزولی انجام می دهد. ThenBy و ThenByDescending برای توسعه نوع خروجی OrderBy و OrderByDescending تعریف می شوند که نوع این متدها را برمی گردانند. این طراحی ما را قادر می سازد که چندین معیار مرتب سازی را با اعمال هر تعداد از متدهای ThenBy و ThenByDescending مشخص کنیم.

مثال:

InnerJoin

المنت های دو دنباله را براساس کلیدهای مطابقت به هم مرتبط می کند.

مثال:

GroupJoin

المنت های دو دنباله را براساس شباهت کلیدها و گروه بندی نتایج به هم مرتبط می کند. Equality comparer پیش فرض برای مقایسه کلیدها استفاده می شود.

مثال:

GroupBy

المنت های یک دنباله را براساس یک تابع انتخاب گر کلید مشخص گروه بندی می نماید.

مثال:

ToDictionary

یک شی از یک آرایه را براساس یک تابع انتخاب گر کلیدی مشخصی ایجاد می کند.

مثال:

توابع جمعی LINQ جاوا اسکریپت

Aggregate

یک تابع جمع کننده را روی یک دنباله اعمال می نماید.

مثال:

Min

کمترین مقدار بین مقادیر دنباله را برمی گرداند.

مثال:

Max

بیشترین مقدار بین مقادیر یک دنباله را برمی گرداند.

مثال:

Sum

مجموع مقادیر یک دنباله عددی را محاسبه می کند.

مثال:

گزاره های LINQ جاوا اسکریپت

Where

مقادیر دنباله را براساس یک گزاره فیلتر می کند.

مثال:

Any

مشخص می کند که آیا المنتی از دنباله وجود دارد یا یک شرط را برقرار می نماید.

مثال:

All

مشخص می کند که آیا همه المنت های یک دنباله در شرطی صدق می کنند.

مثال:

TakeWhile

المنت هایی از دنباله را تا زمانی که یک شرط خاصی درست باشد برمی گرداند و سپس بقیه المنت ها را نادیده می گیرد.

مثال:

SkipWhile

المنت های یک دنباله را تا زمانی که شرط به خصوصی صدق کند نادیده می گیرد و سپس باقیمانده المنت ها را برمی گرداند.

مثال:

Contains

مشخص می کند که آیا یک دنباله شامل یک المنت خاص می باشد یا خیر.

مثال:

توابع تکرار LINQ جاوا اسکریپت

ForEach

یک عمل خاصی را روی هر یک از المنت های آرایه اجرا می کند.

مثال:

DefaultIfEmpty

المنت هایی از یک دنباله مشخص یا یک مقدار مشخص در مجموعه singleton را برمی گرداند اگر که دنباله خالی باشد.

مثال:



رمز فایل : www.mspsoft.ir , www.mspsoft.com
کانال ام اس پی سافت

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *



دوره های آنلاین ام اس پی سافت

آموزش طراحی فروشگاه اینترنتی

آموزش طراحی فروشگاه اینترنتی

طراحی سیستم مدیریت مشتریان

طراحی سیستم مدیریت مشتریان

دوره طراحی وب سایت پورتال خبری

دوره طراحی وب سایت پورتال خبری

دوره طراحی حسابداری فروشگاه

دوره طراحی حسابداری فروشگاه