JavaScript Sıralama Dizileri
Dizi Sıralama
Yöntem sort()
, bir diziyi alfabetik olarak sıralar:
Örnek
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
Bir Diziyi Ters Çevirme
Yöntem reverse()
, bir dizideki öğeleri tersine çevirir.
Bir diziyi azalan düzende sıralamak için kullanabilirsiniz:
Örnek
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
Sayısal Sıralama
Varsayılan olarak, sort()
işlev değerleri dizeler olarak sıralar .
Bu, dizeler için iyi çalışır ("Apple", "Muz" dan önce gelir).
Ancak sayılar dizge olarak sıralanırsa, "25", "100"den büyüktür, çünkü "2", "1"den büyüktür.
Bu nedenle, sort()
sayılar sıralanırken yöntem yanlış sonuç verecektir.
Bunu bir karşılaştırma işlevi sağlayarak düzeltebilirsiniz :
Örnek
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
Azalan bir diziyi sıralamak için aynı numarayı kullanın:
Örnek
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
Karşılaştırma İşlevi
Karşılaştırma işlevinin amacı, alternatif bir sıralama düzeni tanımlamaktır.
Karşılaştırma işlevi, bağımsız değişkenlere bağlı olarak negatif, sıfır veya pozitif bir değer döndürmelidir:
function(a, b){return a - b}
İşlev iki değeri karşılaştırdığında , sort()
değerleri karşılaştırma işlevine gönderir ve değerleri döndürülen (negatif, sıfır, pozitif) değere göre sıralar.
Sonuç negatif a
ise önce sıralanır
b
.
Sonuç pozitif b
ise önce sıralanır a
.
Sonuç 0 ise, iki değerin sıralama düzeninde herhangi bir değişiklik yapılmaz.
Örnek:
Karşılaştırma işlevi, dizideki tüm değerleri, aynı anda iki değeri karşılaştırır (a, b)
.
40 ve 100'ü karşılaştırırken, sort()
yöntem karşılaştırma işlevini(40, 100) çağırır.
İşlev 40 - 100 hesaplar (a - b)
ve sonuç negatif (-60) olduğundan, sıralama işlevi 40'ı 100'den küçük bir değer olarak sıralar.
Sayısal ve alfabetik olarak sıralamayı denemek için bu kod parçacığını kullanabilirsiniz:
<button onclick="myFunction1()">Sort Alphabetically</button>
<button
onclick="myFunction2()">Sort Numerically</button>
<p id="demo"></p>
<script>
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;
function
myFunction1() {
points.sort();
document.getElementById("demo").innerHTML
= points;
}
function myFunction2() {
points.sort(function(a, b){return
a - b});
document.getElementById("demo").innerHTML = points;
}
</script>
Bir Diziyi Rastgele Sırada Sıralama
Örnek
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});
Fisher Yates Yöntemi
Yukarıdaki örnek, dizi .sort() doğru değil, bazı sayıları diğerlerine tercih edecektir.
En popüler doğru yöntem, Fisher Yates karıştırması olarak adlandırılır ve veri biliminde 1938 gibi erken bir tarihte tanıtılmıştır!
JavaScript'te yöntem şuna çevrilebilir:
Örnek
const points = [40, 100, 1, 5, 25, 10];
for (let i = points.length -1; i > 0;
i--) {
let j = Math.floor(Math.random() * i)
let k = points[i]
points[i] = points[j]
points[j] = k
}
En Yüksek (veya En Düşük) Dizi Değerini Bulun
Bir dizideki maksimum veya minimum değeri bulmak için yerleşik işlevler yoktur.
Ancak, bir diziyi sıraladıktan sonra, en yüksek ve en düşük değerleri elde etmek için dizini kullanabilirsiniz.
Artan sıralama:
Örnek
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value
Azalan sıralama:
Örnek
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value
Yalnızca en yüksek (veya en düşük) değeri bulmak istiyorsanız, tüm diziyi sıralamak çok verimsiz bir yöntemdir.
Bir Dizide Math.max() Kullanımı
Math.max.apply
Bir dizideki en yüksek sayıyı bulmak için kullanabilirsiniz :
Örnek
function myArrayMax(arr) {
return Math.max.apply(null, arr);
}
Math.max.apply(null, [1, 2, 3])
eşdeğerdir Math.max(1, 2, 3)
.
Bir Dizide Math.min() Kullanımı
Math.min.apply
Bir dizideki en düşük sayıyı bulmak için kullanabilirsiniz :
Örnek
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
Math.min.apply(null, [1, 2, 3])
eşdeğerdir Math.min(1, 2, 3)
.
Min / Maks JavaScript Yöntemlerim
En hızlı çözüm, "ev yapımı" bir yöntem kullanmaktır.
Bu işlev, her değeri bulunan en yüksek değerle karşılaştıran bir dizide döner:
Örnek (Maks Bul)
function myArrayMax(arr) {
let len = arr.length;
let max = -Infinity;
while (len--) {
if (arr[len] > max) {
max = arr[len];
}
}
return max;
}
Bu işlev, her değeri bulunan en düşük değerle karşılaştıran bir dizide döner:
Örnek (Min. Bul)
function myArrayMin(arr) {
let len = arr.length;
let min = Infinity;
while (len--) {
if (arr[len] < min) {
min = arr[len];
}
}
return min;
}
Nesne Dizilerini Sıralama
JavaScript dizileri genellikle nesneler içerir:
Örnek
const cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}
];
Nesneler farklı veri türlerinin özelliklerine sahip olsa bile sort()
, diziyi sıralamak için yöntem kullanılabilir.
Çözüm, özellik değerlerini karşılaştırmak için bir karşılaştırma işlevi yazmaktır:
Örnek
cars.sort(function(a, b){return a.year - b.year});
Dize özelliklerini karşılaştırmak biraz daha karmaşıktır:
Örnek
cars.sort(function(a, b){
let x = a.type.toLowerCase();
let y = b.type.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});
Komple Dizi Referansı
Tam bir Dizi referansı için şuraya gidin:
JavaScript Dizi Referansını tamamlayın .
Başvuru, tüm Array özelliklerinin ve yöntemlerinin açıklamalarını ve örneklerini içerir.