چگونه آرایه‌ها را در JavaScript ادغام کنیم؟

چگونه آرایه‌ها را در JavaScript ادغام کنیم؟

همواره در کد زدن، انتخاب هوشمندانهٔ فانکشن‌ها و استفاده از ترفندها می‌تواند کدهای کوتاه‌تر و واضح‌تری را به‌ وجود بیاورد و شما را برنامه‌نویس به مراتب حرفه‌ای‌تری جلوه دهد که در همین راستا و در ادامه به معرفی فانکشنی جهت ادغام آرایه‌ها در جاوااسکریپ به روشی بهتر از آنچه مرسوم است، پرداخته‌ایم که به دولوپرهای JS کمک می‌کند تا کنترل بیشتری روی حافظهٔ سیستم داشته باشند.

جاوااسکریپت یک فانکشن ساده برای ادغام آرایه‌ها به اسم concat دارد اما استفاده از این تابع باعث ایجاد یک آرایۀ جدید می‌شود. برای مثال داریم:

var array1 = [1, 2, 3];
var array2 = [4, 5, 6];
console.log(array1.concat(array2)); // result is: [1, 2, 3, 4, 5, 6]

همان‌طور که گفته شد، تابع concat اصلاً کاری به آرایه‌های قبلی نداشته و یک آرایهٔ جدید تولید می‌کند اما اگر قصد داشته باشید تا آرایهٔ دومی را با آرایه‌ای که وجود دارد ادغام کنید بدون آنکه دست به ساخت آرایه‌ای جدید بزنید، می‌توانید از ترفند زیر استفاده کنید:

var array1 = [1, 2, 3];
var array2 = [4, 5, 6];
Array.prototype.push.apply(array1, array2);
console.log(array1); // result is: [1, 2, 3, 4, 5, 6]

همان‌طور که مشاهده می‌شود، دو آرایه داریم به اسامی array1 و array2 که با استفاده از متد Array.prototype و push آرایۀ دوم را با آرایۀ اول به‌ سادگی ادغام کرده بدین شکل که آرایۀ دوم با استفاده از فانکشن push، به ادامهٔ آرایه اول متصل شده است.

در پاسخ به این سؤال که مشکل رویکرد اول چیست، بایستی بگوییم فرض کنیم که array1 دارای ۱۰۰۰۰ آیتم باشد و array2 هم به همین میزان یا حتی بیشتر اِلِمان را در خود جای داده باشد که در چنین شرایطی خروجی، که کلاً آرایه‌ای جدید است، حاوی ۲۰۰۰۰ آیتم خواهد بود که در چنین شرایطی ممکن است با کمبود حافظه مواجه شویم! برای همین منظور، توصیه می‌شود که روش دوم به‌ کار گرفته شود که به‌ جای افزودن یک آرایهٔ جدید، فرایند ادغام را روی یکی از آرایه‌های موجود انجام می‌دهد.

منبع