JavaScript: Dizinin Min ve Maksimum Öğesini Alın
Giriş
JavaScript ile çalışırken çoğu zaman bir dizinin minimum ve maksimum öğelerini elde etmemizi gerektiren durumlarla karşılaşırız; ister kaydırıcının sınırlarını ayarlamak ister istatistikleri kullanıcıya görüntülemek olsun.
Bu makalede, JavaScript'te bir dizinin minimum ve maksimum öğesinin nasıl elde edileceğine bir göz atacağız. Ayrıca dört farklı yönteme bakacağız ve büyük dizilerle uğraşırken hızlarını karşılaştıracağız.
Kullanarak Bir Dizinin Min ve Maksimum Elemanları Nasıl Elde Edilir Matematik nesne
Math
matematiksel işlemleri gerçekleştirirken ihtiyaç duyabileceğiniz birçok yöntem ve sabiti içeren, JavaScript'in yerleşik global kolaylık nesnesidir. Bu makalede kullanacağımız iki yöntem şunlardır: Math.min()
ve Math.max()
– her ikisi de bir sayı listesini argüman olarak kabul ediyor. Adlarından da anlaşılacağı gibi, biri en düşük değere sahip öğeyi döndürür, diğeri ise değeri en yüksek olanı döndürür:
console.log(Math.min(20, 23, 27));
console.log(Math.max(20, 23, 27));
console.log(Math.min(-20, -23, -27));
console.log(Math.max(-20, -23, -27));
Aktarılan öğelerden en az biri sayı değilse veya sayıya dönüştürülemiyorsa, her ikisi de Math.min()
ve Math.max()
İade NaN
:
console.log(Math.min('-20', -23, -27));
console.log(Math.max('number', -23, -27));
Benzer şekilde, bir diziyi argüman olarak iletmeye çalışırsak Math.min()
fonksiyonu elde ederiz, NaN
skaler bir değere dönüştürülemeyen tek bir öğe olarak ele alındığından:
const myArray = [2, 3, 1];
console.log(Math.min(myArray));
Ancak bunun hızlı bir çözümü, öğelerin sarmasını açmak için spread operatörünü kullanmaktır:
const myArray = [2, 3, 1];
console.log(Math.min(...myArray));
Spread Operatörü hakkında daha fazla bilgi edinmek istiyorsanız – bölümümüzü okuyun. JavaScript'te Spread Operatörü Kılavuzu!
Maksimum ve Min Öğesini Alın () Azaltmak
Bazen olarak bilinen azaltma işlemleri katlama, çok çeşitli uygulamalarla fonksiyonel programlamanın en güçlü işlemlerinden bazılarıdır. reduce()
işlevi, her dizi öğesi üzerinde bir azaltıcı işlevi (geri çağırmada tanımlanan) çalıştırır ve sonunda tek bir değer döndürür.
Evrensel olarak uygulanabilmesi nedeniyle yöntemi ele almaya değer:
const myArray = [20, 23, 27];
let minElement = myArray.reduce((a, b) => {
return Math.min(a, b);
});
console.log(minElement);
Min ve Maksimum Elemanı Bul uygulamak()
The apply()
yöntem, belirli bir işlevi çağırmak için kullanılır this
değer ve bir dizi argüman. Bu, dizilere girmemizi mümkün kılar. Math.min()
statik fonksiyon:
const myArray = [20, 23, 27];
let minElement = Math.min.apply(Math, myArray);
console.log(minElement);
let minElement = Math.min.apply(null, myArray);
console.log(minElement);
Standart Döngülerle Min ve Maksimum Elemanları Alma - En Hızlı Performans
Döngüler, JavaScript'te bir koşula bağlı olarak tekrarlanan görevleri gerçekleştirmek için kullanılır. Koşullar geri dönüyor true
or false
. Tanımlanan koşul geri dönene kadar döngü çalışmaya devam eder false
. Bizim durumumuzda, şunu kullanacağız: for
döngü – genellikle kodu birkaç kez çalıştırmak için kullanılır.
Minimum Öğeyi Alın
İlk olarak, minimum elemanı bir dizinin ilk elemanına başlatacağız. Daha sonra döngünün içinden geçiyoruz tüm dizi başka bir öğenin değerinin mevcut minimum değerden küçük olup olmadığını görmek için - eğer öyleyse, yeni minimum değeri mevcut öğenin değerine ayarlayacağız:
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);
Maksimum Elemanı Al
İlk önce maksimum öğeyi dizideki ilk öğeye başlatacağız. Daha sonra, başka bir öğenin başlatılan öğeden daha büyük olup olmadığını görmek için dizinin tamamında döngü yapacağız, böylece onun yerini alacaktır:
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);
Performans Kıyaslaması
JS Benchmark'ı kullanarak - tüm bu yaklaşımları dizideki 100 ila 1000000 öğe arasında değişen girdiler üzerinde çalıştırdık. Performans görecelidir ve dizinin uzunluğuna bağlıdır.
En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!
- Küçük diziler (100) için,
reduce()
yöntem en iyi sonucu verdi, ardından standart döngüler, yayılma operatörü ve ardındanapply()
yöntem. İkinci olanların performansı neredeyse eşittir. - Orta boy diziler (1000) için standart döngüler en iyi performansı gösterir, ardından
reduce()
, yayılma operatörü veapply()
yöntem. Standart döngüler önemli ölçüde daha hızlıdırreduce()
burada ikincilere göre oldukça hızlı. - Gerçekten büyük diziler için (1000000), standart döngüler diğer tüm yöntemlerden o kadar büyük ölçüde daha iyi performans gösterir ki, standart döngüler için durum çok güçlüdür.
Standart döngüler gerçekten iyi ölçeklenir ve yalnızca küçük dizilere uygulandığında rekabeti kaybeder. Birkaç öğeyle veya daha küçük dizilerle çalışıyorsanız tüm yöntemler oldukça kusursuz olacaktır. Dizi ne kadar büyük olursa, standart döngüleri kullanmanın faydası da o kadar büyük olur.
Not: Karşılaştırmalı değerlendirmeleri göründüğü gibi almayın! Muhtemelen farklı tarayıcı sürümleri ve JS motorları ile farklı makinelerde çalıştırılırlar. Bunları uygulamanızda test edin ve kendi kullanım durumunuz için ölçeklenebilir, en hızlı seçeneği seçin.
Sonuç
Bu kılavuzda, JavaScript'te bir dizinin minimum ve maksimum öğelerinin nasıl elde edileceğine bir göz attık. Şuna bir göz attık Math.min()
ve Math.max()
yöntemler, yayılma operatörü, reduce()
Yöntem, apply()
yöntem ve öğeleri bir aracılığıyla elde etmek için özel bir yaklaşım yazdı for
döngü.
Son olarak, küçük diziler için hangi yaklaşımı kullandığınızın gerçekten önemli olmadığını, ancak daha büyük diziler için standart for döngülerini kullanma eğiliminde olmanız gerektiğini belirterek sonuçları karşılaştırdık.
Son Güncelleme: 11 Mayıs 2022
Bunları da sevebilirsiniz…
Gelen kutunuza öğreticiler, kılavuzlar ve geliştirme işleri alın.
© 2013-2022 Yığın Kötüye Kullanımı. Her hakkı saklıdır.