Bu yazıda, bir dizide tekrar eden sayıları bulmanın farklı yöntemlerini göstereceğiz. Bu yöntemlerin bazıları yalnızca yinelenen öğelerin sayısını sayarken, diğerleri bize hangi öğenin tekrarlandığını ve bazılarının her ikisini de yaptığını gösterecek. Buna göre kullanım durumunuz için en iyisini seçebilirsiniz.
Set Nesnesini Kullanma
Set, ES6’da tanıtılan ve benzersiz değerler koleksiyonunu depolayan özel bir veri yapısıdır. Bir Setteki her değerin benzersiz olması gerektiğinden, yinelenen herhangi bir öğeyi geçmek otomatik olarak kaldırılacaktır.
1 2 3 4 5 6 7 8 9 10 | <script> const sayilar = [1, 2, 3, 2, 4, 5, 5, 6]; const essiz = Array.from(new Set(sayilar)); console.log(essiz); // [ 1, 2, 3, 4, 5, 6 ] </script> |
Yukarıda kullandığımız Array.from() yöntemi, Set’i tekrar bir diziye dönüştürür. Bir Set bir dizi olmadığı için bu gereklidir. Dönüşüm için isterseniz spread operatörünü de kullanabilirsiniz.
1 2 3 | const essiz = [...new Set(sayilar)]; |
indexOf () Metodu Kullanma
Bu yöntemde, yaptığımız şey, bir dizinin tüm öğelerinin indexini bu sayının ilk kez gerçekleştiğinde karşılaştırmamızdır. Eşleşmezlerse, bu öğenin bir kopya olduğu anlamına gelir. Tüm bu öğeler filter() metodunu kullanılarak ayrı bir dizide döndürülür.
JavaScript kullanarak bunun uygulanmasına bakalım.
1 2 3 4 5 6 7 8 9 10 11 | <script> const sayilar = [1, 2, 1, 3, 4, 3, 5]; const tekrarSayilarBul = sayilar => sayilar.filter((sayi, sira) => sayilar.indexOf(sayi) !== sira) const tekrarEdenSayilar = tekrarSayilarBul(sayilar); console.log(tekrarEdenSayilar); // Çıktı: [1, 3] </script> |
has() Metodunu Kullanma
Yukarıdaki uygulamada, öğeler bir dizide ikiden fazla meydana geldiyse, çıktı dizisi yinelenen öğelere sahip olabilir. Set metodu ile tekilleyip tekrardan diziye çevirebilirsiniz. Aşağıdaki örneklerde benzer yöntemler gösterilecektir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <script> function tekrarBul(sayilar) { const tekilSayilar = new Set(sayilar); console.log(tekilSayilar) const filtreSayilar = sayilar.filter(sayi => { if (tekilSayilar.has(sayi)) { tekilSayilar.delete(sayi); } else { return sayi; } }); return [...new Set(filtreSayilar)] } const sayilar = [1, 2, 1, 3, 4, 3, 5]; const tekrarEdenSayilar = tekrarBul(sayilar); console.log(tekrarEdenSayilar); // Çıktı: [1, 3] </script> |
Yenilenen Öğe Olup Olmadığını Kontrol Etme
Orijinal dizide yinelenen öğeler olup olmadığını kontrol etmek için her iki dizinin uzunluğunu karşılaştırmanız yeterlidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <script> const sayilar = [1, 2, 3, 2, 4, 5, 5, 6]; const essiz = Array.from(new Set(sayilar)); if(sayilar.length === essiz.length) { console.log(`Tekrar eden sayı yoktur...`); } else { console.log(`Sayılar tekrar sayı içerir...`); } // Çıktı: Sayılar tekrar sayı içerir... </script> |
some() Metodu Kullanma
JavaScript’te, bir veya daha fazla öğe belirli bir koşulu geçerse, some() yöntemi true değerini döndürür.
filter() yöntemi gibi, some() yöntemi de verilen koşulu değerlendirmek için bir dizideki tüm öğeler üzerinde yinelenir.
Geri çağırma işlevinde, mevcut öğe dizinini dizideki diğer öğelerle karşılaştırmak için yine indexOf() yöntemini kullanırız. Her iki dizin de aynıysa, geçerli öğenin yinelenmediği anlamına gelir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <script> const sayilar = [1, 2, 3, 2, 4, 5, 5, 6]; const tekrarVarMi = sayilar.some((sayi, sira) => sira !== sayilar.indexOf(sayi)); if (!tekrarVarMi) { console.log(`Sayılar dizisi tekrar içermiyor.`); } else { console.log(`Sayılar dizisi tekrar içeriyor.`); } // Çıktı: Sayılar dizisi tekrar içeriyor. </script> |











Yorum Yap