از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
صاف کردن آرایه های چند بعدی در جاوا اسکریپت
سرفصلهای مطلب
معرفی
آرایه ها بخشی از ابزارهای توسعه دهنده هستند که اغلب مورد استفاده قرار می گیرند. آنها برای ذخیره چندین مقدار در یک متغیر استفاده می شوند که می تواند بسیار مفید باشد. اما وقتی یک آرایه از آرایه ها دارید چه اتفاقی می افتد؟ این به عنوان یک آرایه چند بعدی شناخته می شود و همیشه کار کردن با آن آسان ترین کار نیست. آنجاست که مسطح کردن وارد می شود.
در این بایت، بررسی خواهیم کرد که آرایه های چند بعدی چیست، چرا ممکن است بخواهید آنها را مسطح کنید، و چگونه می توانید این کار را با استفاده از flat()
روش.
آرایه های چند بعدی
آرایه چند بعدی در اصل آرایه ای است که حاوی آرایه های دیگری است. این آرایههای داخلی میتوانند خود حاوی آرایههایی باشند که منجر به چندین سطح عمق میشود. در اینجا یک مثال ساده آورده شده است:
let multiArray = ((1, 2, 3), (4, 5, 6), (7, 8, 9));
console.log(multiArray);
این خروجی خواهد داشت:
( ( 1, 2, 3 ), ( 4, 5, 6 ), ( 7, 8, 9 ) )
همانطور که می بینید، هر آرایه داخلی موجودیت متمایز خود در آرایه بیرونی است.
چرا آرایه ها را صاف کنیم؟
پس چرا همیشه می خواهید یک آرایه را مسطح کنید. از این گذشته، آیا هدف یک آرایه چند بعدی، داشتن چندین سطح از عمق نیست؟ در حالی که این درست است، هنوز هم زمان هایی وجود دارد که صاف کردن آرایه های شما می تواند مفید باشد.
فرض کنید می خواهید مجموع همه اعداد موجود در ما را پیدا کنید multiArray
از بخش قبل اگر سعی کردید از reduce()
روش مستقیم روی multiArray
، شما به مشکل بر می خورید زیرا reduce()
انتظار یک آرایه یک بعدی را دارد. با مسطح کردن آرایه ابتدا به راحتی می توانید مجموع همه اعداد را پیدا کنید.
با استفاده از تخت() روش
این flat()
متد یک روش جاوا اسکریپت داخلی است که می تواند برای صاف کردن آرایه های چند بعدی استفاده شود. به طور پیش فرض، فقط یک سطح عمیق را صاف می کند. در اینجا روش استفاده از آن آورده شده است:
let multiArray = ((1, 2, 3), (4, 5, 6), (7, 8, 9));
let flatArray = multiArray.flat();
console.log(flatArray);
این خروجی خواهد داشت:
( 1, 2, 3, 4, 5, 6, 7, 8, 9 )
همانطور که می بینید، flat()
آرایه چند بعدی ما را گرفته و به یک آرایه یک بعدی تبدیل کرده است. اکنون ما می توانیم به راحتی مجموع تمام اعداد را با استفاده از آن پیدا کنیم reduce()
:
let sum = flatArray.reduce((a, b) => a + b, 0);
console.log(sum);
این خروجی خواهد داشت:
45
شما آن را دارید! ما با موفقیت آرایه چند بعدی خود را با استفاده از مسطح کردیم flat()
روش، کار با آن را بسیار آسان تر می کند.
با استفاده از کاهش دادن() روش
جاوا اسکریپت reduce()
روش یک ابزار قدرتمند برای متراکم کردن آرایه ها است. تابعی را در برابر یک انباشتگر و هر عنصر در آرایه (از چپ به راست) اعمال می کند تا آن را به یک مقدار خروجی کاهش دهد.
بیایید ببینیم چگونه می توانیم از آن استفاده کنیم reduce()
روش مسطح کردن آرایه ای از آرایه ها:
let arrays = ((1, 2, 3), (4, 5), (6));
let flattened = arrays.reduce((acc, curr) => acc.concat(curr), ());
console.log(flattened); // Output: (1, 2, 3, 4, 5, 6)
در reduce()
روش، acc
(Acumulator) به عنوان یک آرایه خالی شروع می شود ()
. برای هر آرایه فرعی curr
که در arrays
، به هم می پیوندیم curr
به acc
و نتیجه را برگردانید. این کار تا زمانی ادامه مییابد که همه آرایههای فرعی را پردازش کنیم و در نتیجه یک آرایه منفرد و مسطح ایجاد کنیم.
با استفاده از concat() روش
این concat()
روش برای ادغام دو یا چند آرایه استفاده می شود. آرایه های موجود را تغییر نمی دهد، اما در عوض یک آرایه جدید برمی گرداند.
در اینجا روش استفاده شما آمده است concat()
برای مسطح کردن آرایه ای از آرایه ها:
let arrays = ((1, 2, 3), (4, 5), (6));
let flattened = ().concat.apply((), arrays);
console.log(flattened); // Output: (1, 2, 3, 4, 5, 6)
در اینجا ما استفاده می کنیم apply()
تماس گرفتن concat()
با آرایه ها به عنوان آرگومان این به طور موثر همه آرایه های فرعی را در یک آرایه به هم متصل می کند. به خاطر داشته باشید که این فقط برای آرایه های دو بعدی کار می کند، اما نه بزرگتر.
مسطح کردن آرایه های تو در تو
مسطح کردن آرایه های تو در تو، یا آرایه های درون آرایه ها، می تواند کمی پیچیده تر باشد. با این حال، چیز خوب در مورد flat()
روش به این صورت است که می توانیم عمق آرایه ها را برای مسطح شدن مشخص کنیم.
let arrays = ((1, 2, (3)), (4, (5, (6))));
let flattened = arrays.flat(2);
console.log(flattened); // Output: (1, 2, 3, 4, 5, 6)
در این مورد، ما می گوییم flat()
برای مسطح کردن تا 2 سطح از آرایه های تودرتو. اگر آرایه ای با عمق نامعلوم دارید، می توانید پاس بدهید Infinity
به flat()
برای صاف کردن همه آرایه های تو در تو، مهم نیست چقدر عمیق است.
توجه داشته باشید: این flat()
روش در اینترنت اکسپلورر پشتیبانی نمی شود. استفاده از پلاگین polyfill یا Babel را برای ارائه این قابلیت برای مرورگرهای قدیمی در نظر بگیرید.
نتیجه
در این بایت، چند روش را برای مسطح کردن آرایه ها در جاوا اسکریپت بررسی کرده ایم، از جمله reduce()
، concat()
، و flat()
. هر روش موارد استفاده و محدودیت های خود را دارد و درک این موارد می تواند به شما در انتخاب ابزار مناسب برای نیازهای خاص خود کمک کند. به یاد داشته باشید، در حالی که flat()
روشی مناسب است، به دلیل عدم پشتیبانی آن در مرورگرهای قدیمی، ممکن است همیشه بهترین انتخاب نباشد.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1402-12-30 00:31:10