Bir diziyi tersine çevirmek geliştirme aşamasında nadir görülen bir şey değildir ve giriş seviyesi mülakat soruları için oldukça popülerdir. JavaScript ile bir dizgiyi tersine çevirmek için birçok yolumuz var. Dizinin reverse() ve join() yöntemlerinin yanı sıra dizgenin split() yönteminin bir kombinasyonunu kullanabiliriz (çünkü dizgeler sonuçta karakter dizileridir).
Ayrıca bir dizgiyi kendi yinelemeli (döngü) veya özyinelemeli işlevlerimizle tersine çevirebiliriz.
Bu kılavuzda, JavaScript’te bir dizeyi tersine çevirmenin birkaç yolunu inceleyeceğiz.
Dizeyi Tersine Çevirmek için Yerleşik Yöntemleri Kullanma – split(), reverse() ve join()
JavaScript’te bir dizgiyi tersine çevirmenin en basit yolu, bir dizgiyi bir diziye bölmek, ardından reverse() ve onu tekrar bir join() ile birleştirmektir. ES6 ile bu, şu şekilde kısaltılabilir ve basitleştirilebilir:
1 2 3 4 5 6 | let string = "!abahreM" string = [...string].reverse().join(""); console.log(string); // "Merhaba!" |
Neden hepsinin birlikte çalıştığını anlamak için her bir işlevin ne yaptığına bir göz atalım.
split()
split() yöntemi, sağlanan ayırıcıyla bir dizeyi böldükten sonra yeni bir dize dizisi döndürür:
1 2 3 | string.split(ayrac, limit) |
ayrac, dizenin sonuçtaki dizide bir öğeye bölündüğü yeri tanımlar. Dizi elemanının sayısını limit parametresi ile tanımlayabiliriz. split() yöntemini boş bir dize ile kullandığımızda, ”, dize her karaktere bölünecektir. Dizemizi bir dizi bireysel karaktere dönüştürdüğümüzde kullanışlı olacaktır.
Yine aynı sonucu elde etmek için spread(…) operatörünü kullanabilirsiniz. spread operatörü, dizi, dize ve nesneler gibi yinelenebilirler üzerinde çalışan bir JavaScript operatörüdür. Spread operatörünü kullanarak nesneleri ve dizileri kopyalayabilir ve birleştirebiliriz:
1 2 3 4 | [...dizi, 4, 5, 6] // dizi dizisini verilen öğelerle birleştirir. ornekFonk(...dizi) // dizi elemanlarını fonksiyona argüman olarak geçer. |
Spread(yayma) operatörü bir dize ile kullanıldığında, dize bir dizi karaktere dönüştürülür:
1 2 3 4 5 | let str = 'merhaba'; console.log([...str]); //['m', 'e', 'r', 'h', 'a', 'b', 'a'] console.log(str.split('')); // ['m', 'e', 'r', 'h', 'a', 'b', 'a'] |
Not: UTF-16 karakterlerini bölerken split() yöntemi yerine spread operatörünü kullanın.
reverse()
reverse() yerinde, ters çevrilmiş bir dizi döndürür. Yani – sonuç olarak döndürülen bir kopya yerine orijinal dizi tersine çevrilir:
1 2 3 4 5 6 | let str = ['a','b','c','d']; let reversedStr = str.reverse(); console.log(str); // ["d","c","b","a"] console.log(reversedStr); // ["d","c","b","a"] |
Sonucu yeni bir değişkene atamanız gerekmez, ancak genellikle değişken adını daha belirleyici bir adla değiştirmek için yaparız.
join()
join() yöntemi, bir dizinin öğelerini birleştirir ve bir dize döndürür. Elemanları birleştirmek için isteğe bağlı olarak bir ayırıcı da belirtebiliriz. Varsayılan ayırıcıyı kullandığımızda, elemanlar dizede virgülle ayrılacaktır. Ayırıcı olarak boş bir dize kullanmak, dizi öğelerini birleştirecek ve her zamanki gibi bir dize olarak dönecektir:
1 2 3 4 5 6 | let str = ['a','b','c','d']; console.log(str.join('')); // "abcd" console.log(str.join()); // "a,b,c,d" console.log(str.join(' - ')); // "a - b - c - d" |
Dizeyi Tersine Çevirmek için Yerleşik Yöntemleri Birleştirme
Tüm bunları göz önünde bulundurarak – bunların birlikte çalışma şekli sezgisel hale gelir:
1 2 3 4 5 6 7 8 | let str = 'kangal'; console.log('Orjinal : ' + str); let splitStr = str.split(''); // ["k","a","n","g","a","l"] let reversedArr = splitStr.reverse(); let reversedStr = reversedArr.join(''); console.log("Çevrilmiş : " + reversedStr); |
veya kısaltabilirsiniz:
1 2 3 4 5 | let reversedStr = [...str].reverse().join(''); // yada let reversedStr = str.split('').reverse().join(''); |
Yukarıdaki kod şu şekilde sonuçlanır:
1 2 3 4 | Orjinal : kangal Çevrilmiş : lagnak |
Dizeyi Tersine Çevirmek için bir for Döngüsü Kullanma
Bir for döngüsü ile dizedeki her karakter üzerinde yineleme yapabiliriz. Dizenin sonundan başlayarak dizenin başına kadar – karakterleri sürekli olarak yeni bir dizeye ekleyebilir ve böylece ters çevrilmiş bir dize oluşturabiliriz:
1 2 3 4 5 6 7 8 9 10 11 | const str = 'kangal'; console.log('Orjinal : ' + str); let reversedStr = ''; for (let i = str.length - 1; i >= 0; i--) { reversedStr += str[i]; } console.log('Çevrilmiş : ' + reversedStr); |
Burada, ters çevrilmiş dizeyi tutmak için boş bir dize, reversedStr oluşturduk. Dize indeksleri dizi indeksleri gibidir, 0’dan başlarlar. Bu nedenle, döngüye string uzunluğundan (l harfini alarak) başladık ve sayacımız 0 olana kadar (k harfi ile) döngüye girdik.
reversedStr değişkeni, dizenin öğelerini birleştirir.
Kodu çalıştırmak bize şu çıktıyı verir:
1 2 3 4 | Orjinal : kangal Çevrilmiş : lagnak |
Dizeyi Tersine Çevirmek için Özyinelemeyi Kullanma
Özyineleme, bir işlevin kendisini çağırdığı bir süreçtir. Ancak, kendisini çağıran bir fonksiyon, kendisini sonsuza kadar çağırabilir ve süreç hiçbir zaman bir çıkış koşulu olmadan sona ermez. Bu nedenle, işlevin özyinelemeli davranışını sona erdirmek için bir koşul, yani temel koşul sağlarız.
Genel bir özyinelemeli işlevin sözdizimi şöyle görünür:
1 2 3 4 5 6 7 8 9 10 | function yineleme(){ ....... temel işlemler yineleme() ....... } yineleme() |
yineleme() işlevi çağrıldığında, önce bazı koşulları kontrol eder ve doğru olarak değerlendirilirse işlev kendini çağırır. Bu işlem daha sonra tekrar tekrar tekrarlanır. Koşul başarısız olduğunda, özyineleme durdurulur ve işlev bir değer döndürür.
charAt() yöntemi, return ifadesinde yineleme() işleviyle birleştirilir:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function yineleme(str) { if (str === '') return ''; else return yineleme(str.substring(1)) + str.charAt(0); } let str = 'kangal' console.log('Orjinal : ' + str); const cikti = yineleme(str); console.log('Çevrilmiş : ' + cikti); |
Çıktı:
1 2 3 4 | Orjinal : kangal Çevrilmiş : lagnak |
Sonuç
Bu yazıda bir dizgenin nasıl tersine çevrileceğini tartıştık. Yerleşik split(), reverse() ve join() yöntemlerini kullandık, spread operatörü, yeni bir tersine çevrilmiş dize oluşturan bir for döngüleri ve substring() ve charAt() kullanarak özyinelemeli bir işlev yarattık. aynı sonuçlar.











Yorum Yap