روشهای مختلف برای حذف مقادیر تکراری از آرایه در Javascript



visibility  
mode_comment   ۰

در این مطلب قصد داریم روش هایی رو خدمتتون معرفی کنیم که به کمک اون بتونید مقادیر تکراری رو از آرایه ها در Javascript حذف کنید و عناصر باقی مانده رو درون یک آرایه جدید قرار بدید و از اونا استفاده کنید.

یکی از روش های موجود استفاده از کد زیر هست:

در این کد از متد فیلتر استفاده میشه به نحوی که یک آرایه رو می گیره و یک تابع رو به ازای تمامی عناصر آرایه اجرا می کنه. در صورتی که در آرایه names عنصر item تکرار شده باشد، indexOf(item)  اولین موقعیت item رو که در در آرایه می بیند در اختیار ما می گذارد . اما pos در هر تکرار موقعیت دقیق عنصر مربوطه رو مشخص می کنه. بنابراین هر گاه مقدار pos و indexOf(item)  یکسان بود، به این معناست که عنصر بررسی شده تکراری نیست و به آرایه جدید وارد می شود اما اگر برابر نبود، اون عنصر در آرایه جدید حذف میشه.

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

متخصص وردپرس
قالب ها و پلاگین های حرفه ای وردپرس رو خودت بنویس! بازار طراحی قالب و پلاگین نویسی وردپرس به شدت داغه و اگر بلد باشید با برنامه نویسی اختصاصی، قالب ها و پلاگین های دلخواه بنویسید تو مارکت های مطرح دنیا و یا از طریق فریلنسری می تونید به درآمد بالا برید. دوره متخصص وردپرس سون لرن رو حتما ببینید: متخصص وردپرس arrow_back

در روش دوم ابتدا آرایه رو sort می کنیم و از عنصر دوم به بعد، هر عنصر رو با عنصر قبل از خودش چک می کنیم. اگر این دو عنصر متفاوت بودن بدیهی است که اون عنصر در آرایه جدید قرار میگیره در غیر این صورت عنصری که بررسی می کنیم تکراری هست و به آرایه جدید اضافه نمیشه. به کد زیر توجه کنید:

دقت کنید که sort فقط برای آرایه ها کاربرد داره و برای شی یا Object نمی تونیم ازش استفاده کنیم. نکته بعد درباره این روش اینه که با sort  کردن ، آرایه به هم می ریزه. پس در صورتی که به آرایه اولی نیاز ندارید این روش می تونه کاربرد داشته باشه و در غیر اینصورت بهتره که از این روش استفاده نشه.

در روش سوم از set که یکی از امکانات جدید ES6 هست استفاده می کنیم که کار رو بسیار راحت می کنه. به کد زیر توجه کنید:

یکی از ویژگی های set اینه که عناصر تکراری رو قبول نمی کنه و مجموعه ای از عناصر غیر تکراری رو می سازه. در کد بالا ابتدا از آرایه names یک مجموعه یا Set ساختیم و بعد از اون با استفاده از Array.from اون رو تبدیل به آرایه کردیم.

این کد رو می تونیم به صورت کامل با استفاده از ES6 بنویسیم. بصورت زیر:

دو کد بالا دقیقا یک کار رو انجام میدن. در این کد از Arrow function و Rest parameters که در ES6 اضافه شده اند نیز استفاده شده است.

اگر شما در کارتون به یک آرایه با عناصر غیرتکراری نیاز دارید می تونید از همون ابتدا به جای آرایه از Set که هیچ وقت مقادیر تکراری رو قبول نمی کنه استفاده کنید.

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

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

نیاز به لاگین

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