چگونه در Javascript تعداد تکرار اعضای آرایه را حساب کنیم؟



visibility  
mode_comment   ۰

چگونه در Javascript تعداد تکرار اعضای آرایه را حساب کنیم؟

در این مطلب میخوایم تعدادی روش برای محاسبه تعداد تکرار اعضای آرایه رو در اختیارتون قرار بدیم که بدردتون خواهند خورد.

فرض کنید که شما یک آرایه بصورت زیر دارید:

حالا مثلا میخواید ببینید 5 چند بار تکرار شده و یا اینکه 2 چندبار تکرار شده و ...

برای اینکار روشهای مختلفی وجود داره که در اینجا تعدادی از اونا رو بیان میکنیم.

روش اول: استفاده از حلقه for

کد زیر رو ببینید:

همونطور که میبینید در ابتدا یک شئ خالی رو به وجود آوردیم و در خط 4 حلقه for خودمون رو از 0 تا تعداد اعضای آرایه مورد نظر قرار دادیم.

در هر بار تکرار حلقه یک ثابت بنام num ساخته میشه و مقدار المنت فعلی در اون ریخته میشه. در خط بعد بررسی میشه که اگر از قبل این عدد در شئ Object وجود داره، یکی به اون اضافه میکنه و اگر نیست عدد 1 رو بصورت مقدار اولیه اون قرار میده.

به همین راحتی. با به پایان رسیدن حلقه الان ما یک شئ بنام counts داریم که اطلاعات مربوط به همه اعضای تکراری رو در اختیار ما قرار میده. مثلا اگر بخوایم بفهمیم عدد 2 چند بار تکرار شده از counts[2] استفاده میکنیم. همچنین اگر بخوایم به آرایه ای از اعضای غیرتکراری دسترسی پیدا کنیم میتونیم از Object.keys(counts) استفاده کنیم.

برای ساده سازی میتونین بجای خط 6 از کد counts[num] = (counts[num] || 0) + 1 استفاده کنید و دیگه نیازی نیست که از ternary operator استفاده کنید.

روش دوم: استفاده از Lodash

همونطور که میدونین Lodash یک کتابخانه javascript معروف هست که کار رو برای ما خیلی راحت میکنه. اگر شما در پروژتون از Lodash استفاده میکنید میتونین به راحتی بصورت زیر عمل کنید و دیگه نیازی نیست که حلقه for رو بنویسید:

میبینید که در ابتدا ماژول Lodash رو با نام _ لود کردیم و بعد از اون از متد countBy استفاده کردیم و خروجی همونطور که میبینید مانند قبل شده است. به همین راحتی.

روش سوم: استفاده از reduce

برای اینکار شما میتونین از Reduce هم استفاده کنید:

همونطور که میدونین خروجی همه کدها به یک شکل هست و میتونین از هر کدام که خواستید استفاده کنید. مطمئنا روشهای زیاد دیگه ای هم وجود داره که میتونین همچنین کاری رو انجام بدین.

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

اگر شما هم روشی برای انجام اینکار به ذهنتون میرسه خوشحال میشیم که در بخش نظرات با ما در میان بذارید.

comment دیدگاه کاربران

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.