{"id":32795,"date":"2025-10-26T02:40:49","date_gmt":"2025-10-25T23:40:49","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32795"},"modified":"2025-10-26T02:40:49","modified_gmt":"2025-10-25T23:40:49","slug":"javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/","title":{"rendered":"JavaScript&#8217;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz"},"content":{"rendered":"<p><body><\/p>\n<h2>JavaScript&#8217;in <code>sort()<\/code> Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz<\/h2>\n<p>JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olarak, veri manip\u00fclasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek ara\u00e7lar sunar. Bu ara\u00e7lardan biri de dizileri s\u0131ralamak i\u00e7in kullan\u0131lan <code>Array.prototype.sort()<\/code> metodudur. \u00d6zellikle string (metin) dizileriyle \u00e7al\u0131\u015f\u0131rken, bu metodun nas\u0131l davrand\u0131\u011f\u0131n\u0131, varsay\u0131lan s\u0131ralama kurallar\u0131n\u0131 ve ihtiya\u00e7lar\u0131n\u0131za g\u00f6re nas\u0131l \u00f6zelle\u015ftirebilece\u011finizi anlamak kritik \u00f6neme sahiptir. Bu makale, JavaScript&#8217;in <code>sort()<\/code> metodunu kullanarak string dizilerini s\u0131ralaman\u0131n inceliklerini, varsay\u0131lan davran\u0131\u015flardan yerel duyarl\u0131 s\u0131ralamaya kadar t\u00fcm detaylar\u0131yla ele alacakt\u0131r.<\/p>\n<h3>Giri\u015f: Neden String S\u0131ralamas\u0131 \u00d6nemli?<\/h3>\n<p>Veri g\u00f6r\u00fcnt\u00fcleme, arama i\u015flevleri, filtreleme ve genel kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan s\u0131ralama, \u00e7o\u011fu uygulaman\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r. Bir \u00fcr\u00fcn listesini alfabetik olarak s\u0131ralamak, bir kullan\u0131c\u0131 adlar\u0131 listesini d\u00fczenlemek veya bir \u015fehir listesini co\u011frafi olarak anlaml\u0131 bir s\u0131raya koymak gibi pek \u00e7ok senaryoda string s\u0131ralamas\u0131na ihtiya\u00e7 duyar\u0131z. JavaScript&#8217;in <code>sort()<\/code> metodu, bu t\u00fcr g\u00f6revler i\u00e7in yerle\u015fik bir \u00e7\u00f6z\u00fcm sunar. Ancak, metin verilerinin karma\u015f\u0131kl\u0131\u011f\u0131 (b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131l\u0131\u011f\u0131, farkl\u0131 dillerdeki karakter setleri, \u00f6zel semboller) nedeniyle, bu metodun do\u011fru ve etkili bir \u015fekilde kullan\u0131lmas\u0131 \u00f6zel dikkat gerektirir.<\/p>\n<h3>Temel Kavramlar: Diziler, Stringler ve Unicode<\/h3>\n<p><code>sort()<\/code> metodunu anlamadan \u00f6nce, \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 temel veri yap\u0131lar\u0131n\u0131 ve metin g\u00f6sterimini k\u0131saca hat\u0131rlamak faydal\u0131 olacakt\u0131r.<\/p>\n<h4>Diziler (Arrays)<\/h4>\n<p>JavaScript&#8217;te diziler, s\u0131ral\u0131 bir \u015fekilde \u00f6\u011feleri depolayan listelerdir. Her \u00f6\u011fe bir indeks ile eri\u015filebilir ve dizi dinamik olarak b\u00fcy\u00fcy\u00fcp k\u00fc\u00e7\u00fclebilir. <code>sort()<\/code> metodu, bu dizilerin \u00f6\u011felerini belirli bir kritere g\u00f6re yeniden d\u00fczenler.<\/p>\n<h4>Stringler (Strings)<\/h4>\n<p>Stringler, metin verilerini temsil eden karakter dizileridir. JavaScript&#8217;te stringler de\u011fi\u015fmez (immutable) yap\u0131dad\u0131r, yani bir string olu\u015fturulduktan sonra i\u00e7eri\u011fi de\u011fi\u015ftirilemez. S\u0131ralama i\u015flemleri, genellikle stringlerin yeni s\u0131ralanm\u0131\u015f bir g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc olu\u015fturmay\u0131 veya orijinal diziyi yerinde de\u011fi\u015ftirmeyi i\u00e7erir.<\/p>\n<h4>Unicode<\/h4>\n<p>Modern bilgi i\u015flemde metinler, Unicode standard\u0131 kullan\u0131larak temsil edilir. Unicode, d\u00fcnya \u00fczerindeki hemen hemen her yaz\u0131 sistemindeki karakterleri kodlamak i\u00e7in geni\u015f bir karakter seti sa\u011flar. JavaScript stringleri de Unicode karakterlerden olu\u015fur. <code>sort()<\/code> metodunun varsay\u0131lan davran\u0131\u015f\u0131, stringleri kar\u015f\u0131la\u015ft\u0131r\u0131rken bu Unicode de\u011ferlerine dayan\u0131r. Bu, \u00f6zellikle farkl\u0131 dillerden karakterler i\u00e7eren stringlerle \u00e7al\u0131\u015f\u0131rken \u00f6nemli sonu\u00e7lar do\u011furabilir.<\/p>\n<h3><code>sort()<\/code> Metoduna Giri\u015f<\/h3>\n<p><code>Array.prototype.sort()<\/code> metodu, bir dizinin \u00f6\u011felerini yerinde (in-place) s\u0131ralar ve s\u0131ralanm\u0131\u015f diziyi d\u00f6nd\u00fcr\u00fcr. Varsay\u0131lan s\u0131ralama d\u00fczeni artan (ascending) d\u00fczendir.<\/p>\n<h4>S\u00f6zdizimi<\/h4>\n<pre><code class=\"language-javascript\">arr.sort([compareFunction])<\/code><\/pre>\n<p>*   <code>arr<\/code>: S\u0131ralanacak dizi.<br \/>\n*   <code>compareFunction<\/code> (iste\u011fe ba\u011fl\u0131): S\u0131ralama d\u00fczenini tan\u0131mlayan bir fonksiyon. Belirtilmezse, dizi \u00f6\u011feleri stringlere d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr ve Unicode kod noktas\u0131 de\u011ferlerine g\u00f6re s\u0131ralan\u0131r.<\/p>\n<h4><code>sort()<\/code> Metodunun Davran\u0131\u015f\u0131<\/h4>\n<p>1.  <strong>Yerinde S\u0131ralama (In-place Sorting):<\/strong> <code>sort()<\/code> metodu, orijinal diziyi do\u011frudan de\u011fi\u015ftirir. Bu, \u00f6zellikle b\u00fcy\u00fck dizilerle \u00e7al\u0131\u015f\u0131rken bellek verimlili\u011fi a\u00e7\u0131s\u0131ndan faydal\u0131d\u0131r, ancak orijinal dizinin bozulmamas\u0131n\u0131 istiyorsan\u0131z, s\u0131ralamadan \u00f6nce bir kopyas\u0131n\u0131 olu\u015fturman\u0131z gerekti\u011fini unutmay\u0131n (<code>arr.slice().sort()<\/code>).<br \/>\n2.  <strong>D\u00f6n\u00fc\u015f De\u011feri:<\/strong> S\u0131ralanm\u0131\u015f dizinin kendisini d\u00f6nd\u00fcr\u00fcr. Bu, zincirleme metot \u00e7a\u011fr\u0131lar\u0131na olanak tan\u0131r.<br \/>\n3.  <strong>Varsay\u0131lan S\u0131ralama Davran\u0131\u015f\u0131:<\/strong><br \/>\n    *   <code>compareFunction<\/code> sa\u011flanmad\u0131\u011f\u0131nda, <code>sort()<\/code> metodu dizi \u00f6\u011felerini ge\u00e7ici olarak stringlere d\u00f6n\u00fc\u015ft\u00fcr\u00fcr (gerekirse).<br \/>\n    *   Daha sonra, bu stringleri Unicode kod noktas\u0131 de\u011ferlerine g\u00f6re kar\u015f\u0131la\u015ft\u0131r\u0131r. Bu, &#8220;alfabetik&#8221; s\u0131ralama gibi g\u00f6r\u00fcnse de, b\u00fcy\u00fck ve k\u00fc\u00e7\u00fck harflerin farkl\u0131 Unicode de\u011ferleri oldu\u011fu i\u00e7in beklendi\u011fi gibi \u00e7al\u0131\u015fmayabilir. \u00d6rne\u011fin, <code>'Z'<\/code> karakterinin Unicode de\u011feri <code>'a'<\/code> karakterinden daha k\u00fc\u00e7\u00fckt\u00fcr. Bu nedenle, varsay\u0131lan s\u0131ralamada b\u00fcy\u00fck harfler genellikle k\u00fc\u00e7\u00fck harflerden \u00f6nce gelir.<\/p>\n<p><strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-javascript\">const fruits = ['Banana', 'apple', 'Orange', 'grape'];\nfruits.sort();\nconsole.log(fruits); \/\/ \u00c7\u0131kt\u0131: [\"Banana\", \"Orange\", \"apple\", \"grape\"]<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, <code>'B'<\/code> (Banana) ve <code>'O'<\/code> (Orange) karakterlerinin Unicode de\u011ferleri <code>'a'<\/code> (apple) ve <code>'g'<\/code> (grape) karakterlerinden daha k\u00fc\u00e7\u00fckt\u00fcr. Bu y\u00fczden b\u00fcy\u00fck harfle ba\u015flayan stringler \u00f6nce gelir. Bu durum, \u00e7o\u011fu zaman istedi\u011fimiz &#8220;alfabetik&#8221; s\u0131ralama de\u011fildir.<\/p>\n<h3>String Dizilerini Varsay\u0131lan Olarak S\u0131ralama (B\u00fcy\u00fck\/K\u00fc\u00e7\u00fck Harf Duyarl\u0131)<\/h3>\n<p>Varsay\u0131lan <code>sort()<\/code> metodu, stringler i\u00e7in b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131 bir s\u0131ralama yapar. Bu, baz\u0131 durumlarda kullan\u0131\u015fl\u0131 olabilirken, \u00e7o\u011fu zaman kullan\u0131c\u0131lar\u0131n bekledi\u011fi &#8220;s\u00f6zl\u00fck s\u0131ras\u0131&#8221; de\u011fildir.<\/p>\n<pre><code class=\"language-javascript\">const cities = ['Istanbul', 'ankara', 'Izmir', 'bursa'];\ncities.sort();\nconsole.log(cities); \/\/ \u00c7\u0131kt\u0131: [\"Istanbul\", \"Izmir\", \"ankara\", \"bursa\"]<\/code><\/pre>\n<p>Burada <code>'I'<\/code> ve <code>'\u0130'<\/code> (Istanbul, Izmir) karakterlerinin Unicode de\u011ferleri <code>'a'<\/code> ve <code>'b'<\/code> (ankara, bursa) karakterlerinden daha d\u00fc\u015f\u00fckt\u00fcr. Bu nedenle b\u00fcy\u00fck harfle ba\u015flayan \u015fehirler \u00f6nce s\u0131ralan\u0131r. T\u00fcrk\u00e7e karakterler (<code>\u00e7, \u011f, \u0131, \u00f6, \u015f, \u00fc<\/code>) de bu Unicode s\u0131ralamas\u0131nda \u00f6zel bir yere sahiptir ve standart \u0130ngilizce karakterlerden farkl\u0131 davranabilir. \u00d6rne\u011fin, &#8216;\u00e7&#8217; karakterinin Unicode de\u011feri &#8216;c&#8217; karakterinden farkl\u0131d\u0131r ve varsay\u0131lan s\u0131ralamada beklenmedik sonu\u00e7lar do\u011furabilir.<\/p>\n<h3>\u00d6zel S\u0131ralama Fonksiyonu (<code>compareFunction<\/code>) Kullan\u0131m\u0131<\/h3>\n<p>JavaScript&#8217;in <code>sort()<\/code> metodunun ger\u00e7ek g\u00fcc\u00fc, iste\u011fe ba\u011fl\u0131 <code>compareFunction<\/code> parametresinde yatar. Bu fonksiyon, s\u0131ralaman\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 tam olarak kontrol etmenizi sa\u011flar.<\/p>\n<h4>Neden Bir <code>compareFunction<\/code>&#8216;a \u0130htiya\u00e7 Duyar\u0131z?<\/h4>\n<p>*   <strong>B\u00fcy\u00fck\/K\u00fc\u00e7\u00fck Harf Duyars\u0131z S\u0131ralama:<\/strong> Varsay\u0131lan davran\u0131\u015f\u0131n aksine, b\u00fcy\u00fck ve k\u00fc\u00e7\u00fck harfleri ayn\u0131 kabul ederek s\u0131ralama yapmak i\u00e7in.<br \/>\n*   <strong>Yerel Duyarl\u0131 S\u0131ralama:<\/strong> Farkl\u0131 dillerdeki (T\u00fcrk\u00e7e, Almanca vb.) \u00f6zel karakterlerin kendi dilbilgisel kurallar\u0131na g\u00f6re s\u0131ralanmas\u0131 i\u00e7in.<br \/>\n*   <strong>Say\u0131sal S\u0131ralama:<\/strong> Say\u0131sal de\u011ferleri i\u00e7eren stringleri do\u011fru bir \u015fekilde say\u0131sal olarak s\u0131ralamak i\u00e7in (\u00f6rne\u011fin, &#8220;10&#8221; &#8220;2&#8221;den sonra gelmeli).<br \/>\n*   <strong>Karma\u015f\u0131k Kriterler:<\/strong> Birden fazla \u00f6zelli\u011fe g\u00f6re s\u0131ralama yapmak veya \u00f6zel i\u015f mant\u0131\u011f\u0131 uygulamak i\u00e7in.<\/p>\n<h4><code>compareFunction(a, b)<\/code> Yap\u0131s\u0131<\/h4>\n<p><code>compareFunction<\/code> iki arg\u00fcman al\u0131r: <code>a<\/code> ve <code>b<\/code>. Bu iki \u00f6\u011fe kar\u015f\u0131la\u015ft\u0131r\u0131l\u0131r ve fonksiyonun d\u00f6nd\u00fcrd\u00fc\u011f\u00fc de\u011fere g\u00f6re s\u0131ralama karar\u0131 verilir:<\/p>\n<p>*   <strong>Negatif Say\u0131 (< 0):<\/strong> E\u011fer <code>a<\/code>, <code>b<\/code>&#8216;den \u00f6nce gelmeli ise. (<code>a<\/code> < <code>b<\/code>)<br \/>\n*   <strong>Pozitif Say\u0131 (> 0):<\/strong> E\u011fer <code>a<\/code>, <code>b<\/code>&#8216;den sonra gelmeli ise. (<code>a<\/code> > <code>b<\/code>)<br \/>\n*   <strong>S\u0131f\u0131r (0):<\/strong> E\u011fer <code>a<\/code> ve <code>b<\/code>&#8216;nin s\u0131ralama pozisyonu de\u011fi\u015fmemeli ise (yani e\u015fit kabul edilirler).<\/p>\n<p><strong>\u00d6rnek (Say\u0131sal S\u0131ralama &#8211; K\u0131sa Bir Hat\u0131rlatma):<\/strong><\/p>\n<p>String s\u0131ralamas\u0131na ge\u00e7meden \u00f6nce, <code>compareFunction<\/code>&#8216;\u0131n say\u0131sal s\u0131ralamada nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak, temel prensibi kavramak i\u00e7in faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const numbers = [10, 2, 5, 1, 100];\n\n\/\/ Varsay\u0131lan s\u0131ralama (string olarak):\nnumbers.sort();\nconsole.log(numbers); \/\/ \u00c7\u0131kt\u0131: [1, 10, 100, 2, 5] - Yanl\u0131\u015f!\n\n\/\/ Say\u0131sal s\u0131ralama i\u00e7in compareFunction:\nnumbers.sort((a, b) => a - b); \/\/ Artan s\u0131ra\nconsole.log(numbers); \/\/ \u00c7\u0131kt\u0131: [1, 2, 5, 10, 100] - Do\u011fru!\n\nnumbers.sort((a, b) => b - a); \/\/ Azalan s\u0131ra\nconsole.log(numbers); \/\/ \u00c7\u0131kt\u0131: [100, 10, 5, 2, 1] - Do\u011fru!<\/code><\/pre>\n<p>Bu \u00f6rnek, <code>compareFunction<\/code>&#8216;\u0131n \u00f6nemini a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Stringler i\u00e7in de benzer mant\u0131kla, ancak string kar\u015f\u0131la\u015ft\u0131rma metotlar\u0131 kullanarak \u00e7al\u0131\u015faca\u011f\u0131z.<\/p>\n<h3>String Dizilerini B\u00fcy\u00fck\/K\u00fc\u00e7\u00fck Harf Duyars\u0131z S\u0131ralama<\/h3>\n<p>En yayg\u0131n string s\u0131ralama ihtiya\u00e7lar\u0131ndan biri, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf fark\u0131n\u0131 g\u00f6z ard\u0131 ederek &#8220;alfabetik&#8221; s\u0131ralama yapmakt\u0131r. Bunun i\u00e7in <code>compareFunction<\/code> i\u00e7inde stringleri kar\u015f\u0131la\u015ft\u0131rmadan \u00f6nce hepsini ayn\u0131 duruma (<code>toLowerCase()<\/code> veya <code>toUpperCase()<\/code>) getirebiliriz.<\/p>\n<pre><code class=\"language-javascript\">const fruits = ['Banana', 'apple', 'Orange', 'grape'];\n\nfruits.sort((a, b) => {\n    const nameA = a.toLowerCase(); \/\/ Kar\u015f\u0131la\u015ft\u0131rma i\u00e7in k\u00fc\u00e7\u00fck harfe \u00e7evir\n    const nameB = b.toLowerCase(); \/\/ Kar\u015f\u0131la\u015ft\u0131rma i\u00e7in k\u00fc\u00e7\u00fck harfe \u00e7ev\n\n    if (nameA < nameB) {\n        return -1; \/\/ nameA, nameB'den \u00f6nce gelmeli\n    }\n    if (nameA > nameB) {\n        return 1; \/\/ nameA, nameB'den sonra gelmeli\n    }\n    return 0; \/\/ \u0130ki isim de e\u015fit\n});\n\nconsole.log(fruits); \/\/ \u00c7\u0131kt\u0131: [\"apple\", \"Banana\", \"grape\", \"Orange\"]<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m, \u0130ngilizce karakter setindeki stringler i\u00e7in olduk\u00e7a iyi \u00e7al\u0131\u015f\u0131r. Ancak, farkl\u0131 dillerdeki \u00f6zel karakterler (\u00f6rne\u011fin T\u00fcrk\u00e7e &#8216;\u00e7&#8217;, &#8216;\u011f&#8217;, &#8216;\u0131&#8217;, &#8216;\u00f6&#8217;, &#8216;\u015f&#8217;, &#8216;\u00fc&#8217; veya Almanca &#8216;\u00e4&#8217;, &#8216;\u00f6&#8217;, &#8216;\u00fc&#8217;) i\u00e7in hala yetersiz kalabilir. \u00c7\u00fcnk\u00fc <code>toLowerCase()<\/code> veya <code>toUpperCase()<\/code> metotlar\u0131, karakterin Unicode de\u011ferini de\u011fi\u015ftirir, ancak s\u0131ralama mant\u0131\u011f\u0131 hala basit Unicode kar\u015f\u0131la\u015ft\u0131rmas\u0131na dayan\u0131r.<\/p>\n<h3>Yerel Duyarl\u0131 S\u0131ralama (Locale-Aware Sorting) ve <code>localeCompare()<\/code><\/h3>\n<p>Farkl\u0131 dillerin kendine \u00f6zg\u00fc s\u0131ralama kurallar\u0131 vard\u0131r. \u00d6rne\u011fin, \u0130sve\u00e7\u00e7e&#8217;de &#8216;\u00f6&#8217; karakteri &#8216;z&#8217;den sonra gelirken, Almanca&#8217;da &#8216;o&#8217; ile ayn\u0131 kabul edilerek s\u0131ralanabilir (veya &#8216;oe&#8217; olarak). T\u00fcrk\u00e7e&#8217;de ise &#8216;\u00e7&#8217; &#8216;c&#8217;den sonra, &#8216;\u011f&#8217; &#8216;g&#8217;den sonra, &#8216;\u0131&#8217; &#8216;i&#8217;den sonra, &#8216;\u00f6&#8217; &#8216;o&#8217;dan sonra, &#8216;\u015f&#8217; &#8216;s&#8217;den sonra ve &#8216;\u00fc&#8217; &#8216;u&#8217;dan sonra gelir. Standart <code>toLowerCase()<\/code> kar\u015f\u0131la\u015ft\u0131rmas\u0131 bu n\u00fcanslar\u0131 g\u00f6z ard\u0131 eder.<\/p>\n<p>\u0130\u015fte tam da bu noktada <code>String.prototype.localeCompare()<\/code> metodu devreye girer. <code>localeCompare()<\/code> metodu, iki stringi, belirtilen yerel ayar (locale) kurallar\u0131na g\u00f6re kar\u015f\u0131la\u015ft\u0131r\u0131r. Bu, dilbilgisel olarak do\u011fru s\u0131ralama yapman\u0131n en g\u00fcvenilir yoludur.<\/p>\n<h4><code>localeCompare()<\/code> S\u00f6zdizimi<\/h4>\n<pre><code class=\"language-javascript\">string.localeCompare(otherString, [locales], [options])<\/code><\/pre>\n<p>*   <code>string<\/code>: Kar\u015f\u0131la\u015ft\u0131r\u0131lacak ana string.<br \/>\n*   <code>otherString<\/code>: <code>string<\/code> ile kar\u015f\u0131la\u015ft\u0131r\u0131lacak di\u011fer string.<br \/>\n*   <code>locales<\/code> (iste\u011fe ba\u011fl\u0131): Bir veya daha fazla dil etiketi i\u00e7eren bir string veya string dizisi (\u00f6rne\u011fin, <code>'tr-TR'<\/code>, <code>'en-US'<\/code>, <code>['fr', 'de']<\/code>). S\u0131ralama bu yerel ayarlar\u0131n kurallar\u0131na g\u00f6re yap\u0131l\u0131r. Belirtilmezse, kullan\u0131c\u0131n\u0131n varsay\u0131lan yerel ayar\u0131 kullan\u0131l\u0131r.<br \/>\n*   <code>options<\/code> (iste\u011fe ba\u011fl\u0131): S\u0131ralama davran\u0131\u015f\u0131n\u0131 \u00f6zelle\u015ftiren bir nesne.<\/p>\n<p><code>localeCompare()<\/code> metodu, <code>compareFunction<\/code> gibi bir say\u0131 d\u00f6nd\u00fcr\u00fcr:<\/p>\n<p>*   Negatif say\u0131: <code>string<\/code>, <code>otherString<\/code>&#8216;den \u00f6nce gelmeli.<br \/>\n*   Pozitif say\u0131: <code>string<\/code>, <code>otherString<\/code>&#8216;den sonra gelmeli.<br \/>\n*   S\u0131f\u0131r: \u0130ki string e\u015fit kabul edilir.<\/p>\n<h4>T\u00fcrk\u00e7e Karakterler ve <code>localeCompare()<\/code>&#8216;\u0131n \u00d6nemi<\/h4>\n<p>T\u00fcrk\u00e7e, dilimize \u00f6zg\u00fc karakterlere (\u00e7, \u011f, \u0131, \u00f6, \u015f, \u00fc) sahip oldu\u011fu i\u00e7in, standart Unicode s\u0131ralamas\u0131 genellikle yanl\u0131\u015f sonu\u00e7lar verir. <code>localeCompare()<\/code> metodunu <code>'tr'<\/code> yerel ayar\u0131yla kullanmak, bu sorunu \u00e7\u00f6zer.<\/p>\n<p><strong>\u00d6rnek: T\u00fcrk\u00e7e Yerel Duyarl\u0131 S\u0131ralama<\/strong><\/p>\n<pre><code class=\"language-javascript\">const turkishWords = ['\u00e7ilek', 'armut', 'elma', '\u015feftali', '\u00fcz\u00fcm'];\n\n\/\/ Varsay\u0131lan s\u0131ralama (yanl\u0131\u015f):\nturkishWords.sort();\nconsole.log(turkishWords); \/\/ \u00c7\u0131kt\u0131: [\"armut\", \"elma\", \"\u00fcz\u00fcm\", \"\u00e7ilek\", \"\u015feftali\"]\n                           \/\/ '\u00fcz\u00fcm' '\u00e7ilek'ten \u00f6nce, '\u015feftali' '\u00e7ilek'ten sonra geldi\n\n\/\/ T\u00fcrk\u00e7e yerel duyarl\u0131 s\u0131ralama:\nturkishWords.sort((a, b) => a.localeCompare(b, 'tr'));\nconsole.log(turkishWords); \/\/ \u00c7\u0131kt\u0131: [\"armut\", \"\u00e7ilek\", \"elma\", \"\u015feftali\", \"\u00fcz\u00fcm\"]\n                           \/\/ Do\u011fru T\u00fcrk\u00e7e alfabetik s\u0131ra!<\/code><\/pre>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>localeCompare()<\/code> ile <code>'tr'<\/code> yerel ayar\u0131n\u0131 belirtmek, T\u00fcrk\u00e7e karakterlerin do\u011fru bir \u015fekilde s\u0131ralanmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4><code>options<\/code> Parametresi ile Geli\u015fmi\u015f Kontrol<\/h4>\n<p><code>options<\/code> nesnesi, <code>localeCompare()<\/code>&#8216;\u0131n davran\u0131\u015f\u0131n\u0131 daha da ince ayarlaman\u0131za olanak tan\u0131r. En s\u0131k kullan\u0131lan se\u00e7enekler \u015funlard\u0131r:<\/p>\n<p>*   <code>sensitivity<\/code>: Kar\u015f\u0131la\u015ft\u0131rman\u0131n ne kadar duyarl\u0131 olaca\u011f\u0131n\u0131 belirler.<br \/>\n    *   <code>'base'<\/code>: Yaln\u0131zca temel harfleri kar\u015f\u0131la\u015ft\u0131r\u0131r (b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf ve aksan i\u015faretlerini g\u00f6z ard\u0131 eder). Genellikle b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z s\u0131ralama i\u00e7in kullan\u0131l\u0131r.<br \/>\n    *   <code>'accent'<\/code>: Temel harfleri ve aksan i\u015faretlerini kar\u015f\u0131la\u015ft\u0131r\u0131r, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harfleri g\u00f6z ard\u0131 eder.<br \/>\n    *   <code>'case'<\/code>: Temel harfleri ve b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harfleri kar\u015f\u0131la\u015ft\u0131r\u0131r, aksan i\u015faretlerini g\u00f6z ard\u0131 eder.<br \/>\n    *   <code>'variant'<\/code>: Temel harfleri, aksan i\u015faretlerini ve b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harfleri kar\u015f\u0131la\u015ft\u0131r\u0131r (varsay\u0131lan).<br \/>\n*   <code>caseFirst<\/code>: B\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf s\u0131ralamas\u0131n\u0131 belirler. <code>'upper'<\/code> (b\u00fcy\u00fck harfler \u00f6nce), <code>'lower'<\/code> (k\u00fc\u00e7\u00fck harfler \u00f6nce) veya <code>'false'<\/code> (yerel ayara g\u00f6re).<br \/>\n*   <code>numeric<\/code>: <code>true<\/code> olarak ayarlan\u0131rsa, string i\u00e7indeki say\u0131sal de\u011ferleri say\u0131 olarak kar\u015f\u0131la\u015ft\u0131r\u0131r. Bu, &#8220;1&#8221;, &#8220;10&#8221;, &#8220;2&#8221; gibi stringlerin &#8220;1&#8221;, &#8220;2&#8221;, &#8220;10&#8221; olarak s\u0131ralanmas\u0131n\u0131 sa\u011flar (do\u011fal s\u0131ralama).<\/p>\n<p><strong>\u00d6rnek: B\u00fcy\u00fck\/K\u00fc\u00e7\u00fck Harf Duyars\u0131z T\u00fcrk\u00e7e S\u0131ralama (<code>sensitivity: 'base'<\/code>)<\/strong><\/p>\n<pre><code class=\"language-javascript\">const mixedCaseNames = ['Ay\u015fe', 'ali', 'Can', 'deniz'];\n\nmixedCaseNames.sort((a, b) => a.localeCompare(b, 'tr', { sensitivity: 'base' }));\nconsole.log(mixedCaseNames); \/\/ \u00c7\u0131kt\u0131: [\"ali\", \"Ay\u015fe\", \"Can\", \"deniz\"]\n                             \/\/ 'Ay\u015fe' ve 'ali' ayn\u0131 harf grubunda, yerel ayar ve 'base' sensitivity ile do\u011fru s\u0131raland\u0131.<\/code><\/pre>\n<p><strong>\u00d6rnek: Say\u0131sal Stringlerin Do\u011fal S\u0131ralamas\u0131 (<code>numeric: true<\/code>)<\/strong><\/p>\n<pre><code class=\"language-javascript\">const versions = ['v1.0.10', 'v1.0.2', 'v1.0.1'];\n\nversions.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));\nconsole.log(versions); \/\/ \u00c7\u0131kt\u0131: [\"v1.0.1\", \"v1.0.2\", \"v1.0.10\"]\n                       \/\/ E\u011fer numeric: false olsayd\u0131: [\"v1.0.1\", \"v1.0.10\", \"v1.0.2\"] olurdu<\/code><\/pre>\n<p><code>localeCompare()<\/code> metodu, string s\u0131ralamas\u0131 i\u00e7in \u00e7ok y\u00f6nl\u00fc ve g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. \u00c7o\u011fu modern taray\u0131c\u0131da ve Node.js ortam\u0131nda tam olarak desteklenir.<\/p>\n<h3>Performans ve B\u00fcy\u00fck Veri K\u00fcmeleri<\/h3>\n<p><code>sort()<\/code> metodunun performans\u0131, kullan\u0131lan s\u0131ralama algoritmas\u0131na ve <code>compareFunction<\/code>&#8216;\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na ba\u011fl\u0131d\u0131r. JavaScript motorlar\u0131 genellikle Timsort veya Quicksort gibi O(N log N) ortalama zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahip algoritmalar kullan\u0131r.<\/p>\n<p>*   <strong>Dizi Boyutu (N):<\/strong> Dizi ne kadar b\u00fcy\u00fckse, s\u0131ralama o kadar uzun s\u00fcrer. O(N log N) karma\u015f\u0131kl\u0131k, 1000 elemanl\u0131 bir dizi i\u00e7in 100 elemanl\u0131 bir diziden yakla\u015f\u0131k 10 kat daha yava\u015f olaca\u011f\u0131 anlam\u0131na gelmez; logaritmik fakt\u00f6r nedeniyle bu fark daha azd\u0131r, ancak yine de \u00f6nemlidir.<br \/>\n*   <strong><code>compareFunction<\/code>&#8216;\u0131n Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong> E\u011fer <code>compareFunction<\/code> i\u00e7inde karma\u015f\u0131k hesaplamalar, d\u00f6ng\u00fcler veya d\u0131\u015f API \u00e7a\u011fr\u0131lar\u0131 yap\u0131yorsan\u0131z, bu her kar\u015f\u0131la\u015ft\u0131rma i\u00e7in ek bir y\u00fck getirir ve genel s\u0131ralama s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. <code>toLowerCase()<\/code> veya <code>localeCompare()<\/code> gibi yerle\u015fik string metotlar\u0131 genellikle optimize edilmi\u015ftir, ancak yine de her kar\u015f\u0131la\u015ft\u0131rmada \u00e7a\u011fr\u0131ld\u0131klar\u0131 i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r.<br \/>\n*   <strong>Bellek Kullan\u0131m\u0131:<\/strong> <code>sort()<\/code> yerinde bir s\u0131ralama yapt\u0131\u011f\u0131 i\u00e7in genellikle ek bellek ihtiyac\u0131 d\u00fc\u015f\u00fckt\u00fcr (baz\u0131 algoritmalar k\u00fc\u00e7\u00fck bir yard\u0131mc\u0131 dizi kullanabilir). Ancak, s\u0131ralamadan \u00f6nce dizinin bir kopyas\u0131n\u0131 al\u0131rsan\u0131z (<code>slice()<\/code>), bu dizinin boyutu kadar ek bellek kullan\u0131rs\u0131n\u0131z.<\/p>\n<p>B\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken (\u00f6rne\u011fin on binlerce veya y\u00fcz binlerce eleman), performans kritik hale gelebilir. Bu durumlarda:<br \/>\n*   <code>compareFunction<\/code>&#8216;\u0131n m\u00fcmk\u00fcn oldu\u011funca basit ve h\u0131zl\u0131 oldu\u011fundan emin olun.<br \/>\n*   S\u0131ralamay\u0131 istemci taraf\u0131nda yapmak yerine sunucu taraf\u0131nda yapmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<br \/>\n*   E\u011fer dizideki \u00f6\u011feler s\u0131ralamadan \u00f6nce d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi gerekiyorsa (\u00f6rne\u011fin, stringleri say\u0131ya \u00e7evirmek), bu d\u00f6n\u00fc\u015f\u00fcm\u00fc bir kez yap\u0131p bir \u00f6nbellekte saklamak, her kar\u015f\u0131la\u015ft\u0131rmada tekrar tekrar hesaplamaktan daha verimli olabilir.<\/p>\n<h3>Yayg\u0131n Hatalar ve Dikkat Edilmesi Gerekenler<\/h3>\n<p><code>sort()<\/code> metodunu kullan\u0131rken yap\u0131lan baz\u0131 yayg\u0131n hatalar ve bunlardan ka\u00e7\u0131nmak i\u00e7in ipu\u00e7lar\u0131:<\/p>\n<h4>1. Orijinal Dizinin De\u011fi\u015fmesi<\/h4>\n<p><code>sort()<\/code> metodunun orijinal diziyi de\u011fi\u015ftirdi\u011fini unutmak, beklenmedik yan etkilere yol a\u00e7abilir. E\u011fer orijinal diziyi korumak istiyorsan\u0131z, s\u0131ralamadan \u00f6nce bir kopyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-javascript\">const originalArray = ['a', 'c', 'b'];\nconst sortedArray = originalArray.slice().sort(); \/\/ .slice() ile kopya olu\u015ftur\nconsole.log(originalArray); \/\/ \u00c7\u0131kt\u0131: [\"a\", \"c\", \"b\"] - Orijinal dizi de\u011fi\u015fmedi\nconsole.log(sortedArray);   \/\/ \u00c7\u0131kt\u0131: [\"a\", \"b\", \"c\"]<\/code><\/pre>\n<h4>2. Say\u0131sal Stringleri Yanl\u0131\u015f S\u0131ralama<\/h4>\n<p>String dizileri i\u00e7inde say\u0131sal de\u011ferler varsa, varsay\u0131lan s\u0131ralama veya basit <code>toLowerCase()<\/code> kar\u015f\u0131la\u015ft\u0131rmas\u0131 yanl\u0131\u015f sonu\u00e7lar verecektir. Her zaman <code>localeCompare()<\/code>&#8216;\u0131n <code>numeric: true<\/code> se\u00e7ene\u011fini veya \u00f6zel bir say\u0131sal kar\u015f\u0131la\u015ft\u0131rma fonksiyonu kullan\u0131n.<\/p>\n<pre><code class=\"language-javascript\">const items = ['item 1', 'item 10', 'item 2'];\nitems.sort();\nconsole.log(items); \/\/ \u00c7\u0131kt\u0131: [\"item 1\", \"item 10\", \"item 2\"] - Yanl\u0131\u015f!\n\nitems.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));\nconsole.log(items); \/\/ \u00c7\u0131kt\u0131: [\"item 1\", \"item 2\", \"item 10\"] - Do\u011fru!<\/code><\/pre>\n<h4>3. <code>undefined<\/code> veya <code>null<\/code> De\u011ferlerle \u00c7al\u0131\u015fma<\/h4>\n<p>Diziniz <code>undefined<\/code> veya <code>null<\/code> de\u011ferler i\u00e7eriyorsa, <code>sort()<\/code> metodu veya <code>compareFunction<\/code>&#8216;\u0131n\u0131z bu de\u011ferleri d\u00fczg\u00fcn bir \u015fekilde ele almayabilir ve hata f\u0131rlatabilir veya beklenmedik sonu\u00e7lar \u00fcretebilir. Bu t\u00fcr de\u011ferleri s\u0131ralamadan \u00f6nce filtrelemek veya <code>compareFunction<\/code> i\u00e7inde \u00f6zel olarak ele almak iyi bir uygulamad\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const data = ['apple', null, 'banana', undefined, 'orange'];\n\n\/\/ Bu t\u00fcr bir diziyi do\u011frudan s\u0131ralamak hatalara yol a\u00e7abilir veya null\/undefined'\u0131 string olarak i\u015flemeye \u00e7al\u0131\u015f\u0131r.\n\/\/ G\u00fcvenli yakla\u015f\u0131m:\nconst cleanedData = data.filter(item => item !== null && item !== undefined);\ncleanedData.sort((a, b) => a.localeCompare(b));\nconsole.log(cleanedData); \/\/ \u00c7\u0131kt\u0131: [\"apple\", \"banana\", \"orange\"]<\/code><\/pre>\n<h4>4. Karma\u015f\u0131k Veri Yap\u0131lar\u0131n\u0131 S\u0131ralama (Objelerin String \u00d6zelliklerine G\u00f6re)<\/h4>\n<p>Genellikle sadece string dizilerini de\u011fil, string \u00f6zellikleri olan objelerden olu\u015fan dizileri s\u0131ralaman\u0131z gerekir. Bu durumda, <code>compareFunction<\/code> i\u00e7inde objelerin ilgili string \u00f6zelliklerine eri\u015fmeniz gerekir.<\/p>\n<pre><code class=\"language-javascript\">const users = [\n    { name: 'Ay\u015fe', age: 30 },\n    { name: 'ali', age: 25 },\n    { name: 'Can', age: 35 }\n];\n\nusers.sort((a, b) => a.name.localeCompare(b.name, 'tr', { sensitivity: 'base' }));\nconsole.log(users);\n\/* \u00c7\u0131kt\u0131:\n[\n  { name: 'ali', age: 25 },\n  { name: 'Ay\u015fe', age: 30 },\n  { name: 'Can', age: 35 }\n]\n*\/<\/code><\/pre>\n<h3>Geli\u015fmi\u015f S\u0131ralama Senaryolar\u0131<\/h3>\n<h4>Birden Fazla Kriterle S\u0131ralama<\/h4>\n<p>Bir diziyi birden fazla kritere g\u00f6re s\u0131ralamak (\u00f6rne\u011fin, \u00f6nce isme, sonra ya\u015fa g\u00f6re) s\u0131k kar\u015f\u0131la\u015f\u0131lan bir senaryodur. <code>compareFunction<\/code> i\u00e7inde bu mant\u0131\u011f\u0131 uygulayabiliriz.<\/p>\n<pre><code class=\"language-javascript\">const products = [\n    { name: 'Elma', category: 'Meyve', price: 10 },\n    { name: 'Armut', category: 'Meyve', price: 12 },\n    { name: 'Havu\u00e7', category: 'Sebze', price: 8 },\n    { name: 'Portakal', category: 'Meyve', price: 10 }\n];\n\nproducts.sort((a, b) => {\n    \/\/ \u00d6nce kategoriye g\u00f6re s\u0131rala (T\u00fcrk\u00e7e, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z)\n    const categoryComparison = a.category.localeCompare(b.category, 'tr', { sensitivity: 'base' });\n    if (categoryComparison !== 0) {\n        return categoryComparison;\n    }\n\n    \/\/ Kategoriler e\u015fitse, isme g\u00f6re s\u0131rala (T\u00fcrk\u00e7e, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z)\n    const nameComparison = a.name.localeCompare(b.name, 'tr', { sensitivity: 'base' });\n    if (nameComparison !== 0) {\n        return nameComparison;\n    }\n\n    \/\/ \u0130simler de e\u015fitse, fiyata g\u00f6re s\u0131rala (say\u0131sal)\n    return a.price - b.price;\n});\n\nconsole.log(products);\n\/* \u00c7\u0131kt\u0131:\n[\n  { name: 'Armut', category: 'Meyve', price: 12 },\n  { name: 'Elma', category: 'Meyve', price: 10 },\n  { name: 'Portakal', category: 'Meyve', price: 10 },\n  { name: 'Havu\u00e7', category: 'Sebze', price: 8 }\n]\n*\/<\/code><\/pre>\n<h4>Ters S\u0131ralama (Descending Order)<\/h4>\n<p>Azalan (descending) s\u0131rada s\u0131ralama yapmak i\u00e7in, <code>compareFunction<\/code>&#8216;\u0131n d\u00f6n\u00fc\u015f de\u011ferini tersine \u00e7evirmeniz yeterlidir. Say\u0131sal kar\u015f\u0131la\u015ft\u0131rmalarda <code>b - a<\/code> kullanmak gibi, <code>localeCompare()<\/code> i\u00e7in de d\u00f6n\u00fc\u015f de\u011ferini negatifle \u00e7arpabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">const cities = ['Istanbul', 'ankara', 'Izmir', 'bursa'];\n\n\/\/ B\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z azalan s\u0131ralama\ncities.sort((a, b) => {\n    return b.localeCompare(a, 'tr', { sensitivity: 'base' }); \/\/ a ve b'nin yerini de\u011fi\u015ftir\n});\nconsole.log(cities); \/\/ \u00c7\u0131kt\u0131: [\"Izmir\", \"Istanbul\", \"bursa\", \"ankara\"] - Yanl\u0131\u015f, 'bursa' 'ankara'dan sonra gelmeliydi.\n\n\/\/ Do\u011fru azalan s\u0131ralama:\ncities.sort((a, b) => {\n    return a.localeCompare(b, 'tr', { sensitivity: 'base' }) * -1; \/\/ Normal s\u0131ralamay\u0131 yap, sonra sonucu ters \u00e7evir\n});\nconsole.log(cities); \/\/ \u00c7\u0131kt\u0131: [\"Izmir\", \"Istanbul\", \"bursa\", \"ankara\"]\n                     \/\/ Hata, bu s\u0131ralama da ayn\u0131 sonucu verdi.\n\n\/\/ Do\u011fru azalan s\u0131ralama i\u00e7in:\ncities.sort((a, b) => {\n    const comparison = a.localeCompare(b, 'tr', { sensitivity: 'base' });\n    return -comparison; \/\/ Kar\u015f\u0131la\u015ft\u0131rma sonucunu ters \u00e7evir\n});\nconsole.log(cities); \/\/ \u00c7\u0131kt\u0131: [\"Izmir\", \"Istanbul\", \"bursa\", \"ankara\"]\n                     \/\/ Yine ayn\u0131 hata. Bunun nedeni, localeCompare'\u0131n zaten belirli bir s\u0131raya g\u00f6re de\u011fer d\u00f6nd\u00fcrmesi.\n                     \/\/ A ve B'nin yerini de\u011fi\u015ftirmek en do\u011fru y\u00f6ntemdir.\n\nconst cities2 = ['Istanbul', 'ankara', 'Izmir', 'bursa'];\ncities2.sort((a, b) => b.localeCompare(a, 'tr', { sensitivity: 'base' }));\nconsole.log(cities2); \/\/ \u00c7\u0131kt\u0131: [\"Izmir\", \"Istanbul\", \"bursa\", \"ankara\"]\n\n\/\/ Tekrar kontrol edelim:\nconst turkishCities = ['Adana', '\u00c7ank\u0131r\u0131', 'Bursa', 'Denizli'];\nturkishCities.sort((a, b) => a.localeCompare(b, 'tr')); \/\/ Artan\nconsole.log(turkishCities); \/\/ [\"Adana\", \"Bursa\", \"\u00c7ank\u0131r\u0131\", \"Denizli\"]\n\nturkishCities.sort((a, b) => b.localeCompare(a, 'tr')); \/\/ Azalan\nconsole.log(turkishCities); \/\/ [\"Denizli\", \"\u00c7ank\u0131r\u0131\", \"Bursa\", \"Adana\"]\n\n\/\/ Evet, <code>b.localeCompare(a, ...)<\/code> do\u011fru azalan s\u0131ralamay\u0131 sa\u011fl\u0131yor.<\/code><\/pre>\n<h3>Alternatif S\u0131ralama Yakla\u015f\u0131mlar\u0131 (K\u0131sa Bahsetme)<\/h3>\n<p>Nadiren de olsa, <code>Array.prototype.sort()<\/code>&#8216;un performans veya esneklik a\u00e7\u0131s\u0131ndan yetersiz kald\u0131\u011f\u0131 durumlar olabilir. Bu gibi durumlarda, \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphaneler veya \u00f6zel algoritmalar d\u00fc\u015f\u00fcn\u00fclebilir:<\/p>\n<p>*   <strong>Lodash <code>_.sortBy<\/code>:<\/strong> Lodash gibi yard\u0131mc\u0131 k\u00fct\u00fcphaneler, daha deklaratif bir s\u00f6zdizimi ve birden \u00e7ok kritere g\u00f6re s\u0131ralama i\u00e7in kolayl\u0131klar sunar. Ancak, <code>localeCompare()<\/code> gibi yerel duyarl\u0131 s\u0131ralama \u00f6zelliklerini genellikle do\u011frudan sa\u011flamazlar ve yine de kendi <code>compareFunction<\/code>&#8216;\u0131n\u0131z\u0131 ge\u00e7irmeniz gerekebilir.<br \/>\n*   <strong>\u00d6zel S\u0131ralama Algoritmalar\u0131:<\/strong> \u00c7ok b\u00fcy\u00fck veri k\u00fcmeleri veya \u00e7ok \u00f6zel s\u0131ralama gereksinimleri i\u00e7in, kendi s\u0131ralama algoritman\u0131z\u0131 uygulamak (\u00f6rne\u011fin, radix sort gibi stringler i\u00e7in daha h\u0131zl\u0131 olabilecek algoritmalar) bir se\u00e7enek olabilir. Ancak bu, genellikle gereksiz bir karma\u015f\u0131kl\u0131kt\u0131r ve \u00e7o\u011fu web uygulamas\u0131 i\u00e7in <code>Array.prototype.sort()<\/code> yeterlidir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>JavaScript&#8217;in <code>Array.prototype.sort()<\/code> metodu, string dizilerini s\u0131ralamak i\u00e7in esnek ve g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Varsay\u0131lan davran\u0131\u015f\u0131n\u0131n b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131 ve Unicode kod noktas\u0131 tabanl\u0131 oldu\u011funu anlamak, beklenmedik sonu\u00e7lardan ka\u00e7\u0131nmak i\u00e7in ilk ad\u0131md\u0131r.<\/p>\n<p>\u00c7o\u011fu ger\u00e7ek d\u00fcnya senaryosunda, \u00f6zellikle farkl\u0131 dillerdeki metinlerle \u00e7al\u0131\u015f\u0131rken, <code>compareFunction<\/code> ve <code>String.prototype.localeCompare()<\/code> metodunun g\u00fcc\u00fcnden yararlanmak esast\u0131r. <code>localeCompare()<\/code>&#8216;\u0131n <code>locales<\/code> ve <code>options<\/code> parametreleri sayesinde, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131zl\u0131k, yerel dil kurallar\u0131na uygunluk ve say\u0131sal stringlerin do\u011fal s\u0131ralamas\u0131 gibi karma\u015f\u0131k gereksinimleri kolayca kar\u015f\u0131layabilirsiniz.<\/p>\n<p>Performans ve yayg\u0131n hatalar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak, <code>sort()<\/code> metodunu bilin\u00e7li bir \u015fekilde kullanmak, uygulamalar\u0131n\u0131z\u0131n daha sa\u011flam, kullan\u0131c\u0131 dostu ve uluslararas\u0131la\u015ft\u0131r\u0131lm\u0131\u015f olmas\u0131na yard\u0131mc\u0131 olacakt\u0131r. Do\u011fru <code>compareFunction<\/code>&#8216;\u0131 se\u00e7mek ve <code>localeCompare()<\/code>&#8216;\u0131n sundu\u011fu imkanlar\u0131 anlamak, JavaScript&#8217;te string s\u0131ralama ustas\u0131 olman\u0131n anahtar\u0131d\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript&#8217;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz\nJavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olara","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[129],"tags":[],"class_list":{"0":"post-32795","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-javascript","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript&#039;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript&#039;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz\" \/>\n<meta property=\"og:description\" content=\"JavaScript&#039;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olara\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-25T23:40:49+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript&#8217;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz\",\"datePublished\":\"2025-10-25T23:40:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/\"},\"wordCount\":2634,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Javascript\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/\",\"name\":\"JavaScript'in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-25T23:40:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript&#8217;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JavaScript'in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript'in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz","og_description":"JavaScript'in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olara","og_url":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-25T23:40:49+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript&#8217;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz","datePublished":"2025-10-25T23:40:49+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/"},"wordCount":2634,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Javascript"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/","url":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/","name":"JavaScript'in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-25T23:40:49+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptin-sort-metodu-ile-string-dizilerini-siralama-derinlemesine-bir-kilavuz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript&#8217;in sort() Metodu ile String Dizilerini S\u0131ralama: Derinlemesine Bir K\u0131lavuz"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32795"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32795\/revisions"}],"predecessor-version":[{"id":32796,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32795\/revisions\/32796"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}