از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
جاوا اسکریپت: حداقل و حداکثر عنصر آرایه را دریافت کنید هنگام کار با جاوا اسکریپت، ما اغلب با موقعیت هایی مواجه می شویم که ما را ملزم می کند حداقل و حداکثر عناصر یک آرایه را به دست آوریم – چه برای تعیین مرزهای یک نوار لغزنده یا نمایش آمار به کاربر. در این مقاله نگاهی خواهیم داشت به اینکه چگونه می توان حداقل …
سرفصلهای مطلب
معرفی
هنگام کار با جاوا اسکریپت، ما اغلب با موقعیتهایی مواجه میشویم که از ما میخواهند حداقل و حداکثر عناصر یک آرایه را به دست آوریم – چه برای تعیین مرزهای یک نوار لغزنده یا نمایش آمار به کاربر.
در این مقاله، روش به دست آوردن حداقل و حداکثر عنصر یک آرایه در جاوا اسکریپت را بررسی خواهیم کرد. ما همچنین به چهار روش مختلف نگاه خواهیم کرد و سرعت آنها را هنگام برخورد با آرایه های بزرگ مقایسه خواهیم کرد.
روش بدست آوردن حداقل و حداکثر عناصر یک آرایه با استفاده از ریاضی هدف – شی
Math
یک شیء ساده داخلی جاوا اسکریپت است که شامل روشها و ثابتهای زیادی است که ممکن است هنگام انجام عملیات ریاضی به آنها نیاز داشته باشید. دو روشی که در این مقاله از آنها استفاده خواهیم کرد عبارتند از Math.min()
و Math.max()
– هر دوی آنها لیستی از اعداد را به عنوان آرگومان می پذیرند. همانطور که از نام آنها پیداست، یکی عنصری را با کمترین مقدار برمیگرداند و دیگری عنصری را که مقدار آن بالاترین است را برمیگرداند:
console.log(Math.min(20, 23, 27)); // 20
console.log(Math.max(20, 23, 27)); // 27
console.log(Math.min(-20, -23, -27)); // -27
console.log(Math.max(-20, -23, -27)); // -20
اگر حداقل یکی از عناصر ارسال شده عدد نباشد یا نتوان آن را به عدد تبدیل کرد، هر دو Math.min()
و Math.max()
برمی گرداند NaN
:
console.log(Math.min('-20', -23, -27)); // -27
console.log(Math.max('number', -23, -27)); // NaN
به طور مشابه، اگر بخواهیم آرایه ای را به عنوان آرگومان ارسال کنیم Math.min()
تابع، یک را دریافت می کنیم NaN
، از آنجایی که به عنوان یک عنصر واحد در نظر گرفته می شود که نمی تواند به یک مقدار اسکالر تبدیل شود:
const myArray = (2, 3, 1);
console.log(Math.min(myArray)); // NaN
با این حال، یک راه حل سریع برای این کار استفاده از عملگر spread برای باز کردن عناصر است:
const myArray = (2, 3, 1);
console.log(Math.min(...myArray)); // 1
اگر مایلید در مورد اپراتور Spread اطلاعات بیشتری کسب کنید – راهنمای ما برای اپراتور Spread را در جاوا اسکریپت بخوانید!
حداکثر و حداقل عنصر را با کاهش دادن()
عملیات کاهش، گاهی اوقات به عنوان شناخته شده است تاشو، برخی از قدرتمندترین عملیات برنامه نویسی تابعی هستند که کاربردهای متنوعی دارند. را reduce()
تابع، یک تابع کاهنده را اجرا می کند (تعریف شده در یک تماس برگشتی) روی هر عنصر آرایه و در پایان یک مقدار واحد را برمی گرداند.
به دلیل اینکه چگونه می توان آن را به طور جهانی اعمال کرد، ارزش آن را دارد که این روش را پوشش دهیم:
const myArray = (20, 23, 27);
let minElement = myArray.reduce((a, b) => {
return Math.min(a, b);
});
console.log(minElement); // 20
عنصر Min و Max را با درخواست دادن()
را apply()
متد برای فراخوانی یک تابع با یک داده استفاده می شود this
مقدار و آرایه ای از آرگومان ها. این امکان را برای ما فراهم می کند تا آرایه ها را وارد کنیم Math.min()
تابع استاتیک:
const myArray = (20, 23, 27);
let minElement = Math.min.apply(Math, myArray);
console.log(minElement); // 20
// Or
let minElement = Math.min.apply(null, myArray);
console.log(minElement); // 20
دریافت حداقل و حداکثر عناصر با حلقه های استاندارد – سریعترین عملکرد
حلقه ها در جاوا اسکریپت برای انجام کارهای تکراری بر اساس استفاده می شوند روی یک شرط شرایط بازگشت true
یا false
. یک حلقه تا زمانی که شرایط تعریف شده برگردد به کار خود ادامه خواهد داد false
. در مورد ما، ما از آن استفاده خواهیم کرد for
حلقه – معمولاً برای اجرای کد چند بار استفاده می شود.
حداقل عنصر را دریافت کنید
ابتدا حداقل عنصر را به اولین عنصر یک آرایه مقداردهی اولیه می کنیم. سپس، ما از طریق حلقه کل آرایه برای دیدن اینکه آیا مقدار هر عنصر دیگری کمتر از مقدار حداقل فعلی است – اگر اینطور باشد، مقدار حداقل جدید را به مقدار عنصر فعلی تنظیم می کنیم:
const myArray = (20, 23, 27);
let minElement = myArray(0);
for (let i = 1; i < arrayLength; ++i) {
if (myArray(i) < minElement) {
minElement = myArray(i);
}
}
console.log(minElement); // 20
حداکثر عنصر را دریافت کنید
ابتدا عنصر حداکثر را به اولین عنصر آرایه مقدار دهی اولیه می کنیم. سپس کل آرایه را حلقه می کنیم تا ببینیم آیا عنصر دیگری بزرگتر از عنصر اولیه است یا خیر، بنابراین آن را جایگزین می کنیم:
const myArray = (20, 23, 27);
let maxElement = myArray(0);
for (let i = 1; i < arrayLength; ++i) {
if (myArray(i) > maxElement) {
maxElement = myArray(i);
}
}
console.log(maxElement); // 27
معیار عملکرد
با استفاده از JS Benchmark – ما همه این رویکردها را اجرا کرده ایم روی ورودی متفاوت، از 100 تا 1000000 عنصر در آرایه. عملکرد نسبی است و بستگی دارد روی طول آرایه
- برای آرایه های کوچک (100)،
reduce()
روش بهترین عملکرد را داشت و به دنبال آن حلقههای استاندارد، عملگر گسترش و سپسapply()
روش. دونده ها در عملکرد تقریبا برابر هستند. - برای آرایه های متوسط (1000)، حلقه های استاندارد بهترین عملکرد را دارند و به دنبال آن
reduce()
، اپراتور گسترش وapply()
روش. حلقه های استاندارد به طور قابل توجهی سریعتر ازreduce()
در اینجا، که به نوبه خود، نسبتا سریعتر از دونده است. - برای آرایههای واقعاً بزرگ (1000000)، حلقههای استاندارد تا حد زیادی از سایر روشها بهتر عمل میکنند که موردی برای حلقههای استاندارد بسیار قوی است.
حلقههای استاندارد بسیار خوب مقیاس میشوند و تنها زمانی در رقابت شکست میخورند که روی آرایههای کوچک اعمال شوند. اگر با چند آیتم یا آرایههای کوچکتر سروکار دارید، همه روشها نسبتاً یکپارچه خواهند بود. هرچه آرایه بزرگتر باشد، مزایای استفاده از حلقه های استاندارد بیشتر است.
توجه داشته باشید: معیارها را در ارزش اسمی نگیرید! آنها اجرا می شوند روی ماشینهای مختلف، با نسخههای مرورگر و موتورهای JS احتمالاً متفاوت. اینها را در برنامه خود آزمایش کنید و مقیاس پذیر و سریع ترین گزینه را برای مورد استفاده خود انتخاب کنید.
نتیجه
در این راهنما، نگاهی به روش بدست آوردن حداقل و حداکثر عناصر یک آرایه در جاوا اسکریپت انداخته ایم. ما نگاهی به آن انداخته ایم Math.min()
و Math.max()
روش ها، عملگر گسترش، reduce()
روش، apply()
روش و یک رویکرد سفارشی برای دریافت عناصر از طریق a نوشت for
حلقه
در نهایت، ما نتایج را محک زدیم و اشاره کردیم که واقعاً مهم نیست که از کدام رویکرد برای آرایههای کوچک استفاده میکنید، در حالی که باید از استاندارد برای حلقهها برای آرایههای بزرگتر استفاده کنید.
منتشر شده در 1403-01-09 15:32:04