آموزش تبدیل یک آرایه به گروهی از آرایهها در JavaScript
۱۶ فروردین ۱۴۰۰

گاهی اوقات ممکن است بخواهیم یک آرایه را به چندین آرایه تقسیم کنیم بنابراین تصمیم گرفتیم در این مقاله با ارائه یک روش سریع و آسان به این موضوع بپردازیم.
مسئله
فرض را بر این بگیریم که آرایه زیر، آرایه مورد نظر ما است:
const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
و به هر دلیلی میخواهیم آرایه فوق را بهصورت زیر به چند آرایه تقسیم کنیم:
const result = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
بنابراین راه حل چیست؟
راه حل
راه حل ما به شکل زیر است اما بایستی توجه داشته باشید که در راه حل ما یک آرایه جدید با نام result
ایجاد میشود و در آرایه اولیه ما یعنی nums
تغییری ایجاد نخواهد شد:
const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
// Get number of elements per subarray
const numsPerGroup = Math.ceil(nums.length / 3);
// Create array based on number of groups
const result = new Array(3)
// Make sure each element isn't empty
.fill('')
// For each group, grab the right `slice` of the input array
.map((_, i) => nums.slice(i * numsPerGroup, (i + 1) * numsPerGroup));
بهطور کلی با استفاده از کدهای فوق، مسئلهی مورد نظر ما حل میشود اما آیا میتوانیم این راه حل را به یک فانکشن تبدیل کنیم؟
ایحاد فانکشن برای استفاده مجدد
برای استفادهی مجدد از راه حل فوق بایستی کدها را در یک فانکشن قرار داده و دادههای استاتیک یعنی nums
و 3
را بهعنوان آرگومانهای ورودی فانکشن دریافت کنیم:
function createGroups(arr, numGroups) {
const perGroup = Math.ceil(arr.length / numGroups);
return new Array(numGroups)
.fill('')
.map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));
}
حال بیایید عملکرد آن را ببینیم:
console.log(createGroups(['cat', 'dog', 'pig', 'frog'], 2));
// [["cat", "dog"], ["pig", "frog"]]
console.log(createGroups([1, 2, 3, 4, 5], 3));
// [[1, 2], [3, 4], [5]]
منبع: https://typeofnan.dev/how-to-split-an-array-into-a-group-of-arrays-in-javascript
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
![liara testimonial]()
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
![liara testimonial]()
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
![liara testimonial]()
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
![liara testimonial]()
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
![liara testimonial]()
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
![liara testimonial]()
vanenshi