Zephyrnet Logosu

JavaScript: Dizinin Min ve Maksimum Öğesini Alın

Tarih:

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, NaNskaler 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ından apply() 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ü ve apply() yöntem. Standart döngüler önemli ölçüde daha hızlıdır reduce() 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

Bu makale yardımcı oldu mu?

Bunları da sevebilirsiniz…

Gelen kutunuza öğreticiler, kılavuzlar ve geliştirme işleri alın.

AWS bulutunda Node.js uygulamalarını tedarik etmek, dağıtmak ve çalıştırmak için ihtiyaç duyacağınız temeli oluşturun. Lambda, EC2, S3, SQS ve daha fazlasını öğrenin!

© 2013-2022 Yığın Kötüye Kullanımı. Her hakkı saklıdır.

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?