{"id":31294,"date":"2025-10-08T09:41:18","date_gmt":"2025-10-08T06:41:18","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31294"},"modified":"2025-10-08T09:41:18","modified_gmt":"2025-10-08T06:41:18","slug":"javascriptte-dizileri-anlamak-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/","title":{"rendered":"JavaScript&#8217;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>JavaScript&#8217;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber<\/h2>\n<h3>Giri\u015f: Diziler Neden Bu Kadar \u00d6nemli?<\/h3>\n<p>JavaScript, modern web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve bu dilin sundu\u011fu en g\u00fc\u00e7l\u00fc ve esnek veri yap\u0131lar\u0131ndan biri de dizilerdir (Arrays). Diziler, birden fazla de\u011feri tek bir de\u011fi\u015fken alt\u0131nda d\u00fczenli bir \u015fekilde saklamam\u0131z\u0131 sa\u011flayan, s\u0131ral\u0131 koleksiyonlard\u0131r. \u0130ster bir kullan\u0131c\u0131 listesi, ister bir \u00fcr\u00fcn katalo\u011fu, isterse bir dizi say\u0131sal veri olsun, JavaScript dizileri bu t\u00fcr veri k\u00fcmelerini etkin bir \u015fekilde y\u00f6netmek i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r.<\/p>\n<p>Bir dizi, elemanlar\u0131na bir indeks (s\u0131ra numaras\u0131) arac\u0131l\u0131\u011f\u0131yla eri\u015filebilen, s\u0131f\u0131r tabanl\u0131 bir veri yap\u0131s\u0131d\u0131r. Yani, bir dizinin ilk eleman\u0131 0. indekste, ikinci eleman\u0131 1. indekste yer al\u0131r ve bu b\u00f6yle devam eder. JavaScript dizileri, di\u011fer baz\u0131 dillerdeki dizilerin aksine, farkl\u0131 veri tiplerini ayn\u0131 anda bar\u0131nd\u0131rabilir. Bir dizide hem say\u0131lar, hem metinler, hem boolean de\u011ferler, hem de nesneler bulunabilir. Bu esneklik, JavaScript&#8217;i dinamik ve \u00e7e\u015fitli veri yap\u0131lar\u0131yla \u00e7al\u0131\u015fmak i\u00e7in olduk\u00e7a g\u00fc\u00e7l\u00fc k\u0131lar.<\/p>\n<p>Bu makalede, JavaScript dizilerinin temelden ileri seviyeye kadar t\u00fcm y\u00f6nlerini ele alaca\u011f\u0131z. Dizi olu\u015fturma y\u00f6ntemlerinden elemanlara eri\u015fime, dizileri manip\u00fcle etme metotlar\u0131ndan geli\u015fmi\u015f yineleme tekniklerine, performans ipu\u00e7lar\u0131ndan en iyi uygulamalara kadar geni\u015f bir yelpazede bilgi sunarak, dizileri tam anlam\u0131yla anlaman\u0131z\u0131 ve projelerinizde etkin bir \u015fekilde kullanman\u0131z\u0131 sa\u011flayaca\u011f\u0131z.<\/p>\n<h3>JavaScript Dizilerinin Temelleri<\/h3>\n<p>Diziler, programlamada veri koleksiyonlar\u0131n\u0131 d\u00fczenlemenin en temel yollar\u0131ndan biridir. JavaScript&#8217;te bir dizi olu\u015fturmak ve elemanlar\u0131na eri\u015fmek olduk\u00e7a kolayd\u0131r.<\/p>\n<h4>Dizi Olu\u015fturma Y\u00f6ntemleri<\/h4>\n<p>JavaScript&#8217;te dizi olu\u015fturman\u0131n birka\u00e7 farkl\u0131 yolu vard\u0131r. En yayg\u0131n ve \u00f6nerilen y\u00f6ntem dizi literalidir.<\/p>\n<h5>Dizi Literali <code>[]<\/code><\/h5>\n<p>Dizi literalini kullanarak bir dizi olu\u015fturmak, en basit ve en yayg\u0131n y\u00f6ntemdir. K\u00f6\u015feli parantezler <code>[]<\/code> aras\u0131na, virg\u00fclle ayr\u0131lm\u0131\u015f elemanlar\u0131 yazarak bir dizi olu\u015fturulur.<\/p>\n<pre><code class=\"language-javascript\">const meyveler = [\"Elma\", \"Muz\", \"Portakal\"];\nconst sayilar = [1, 2, 3, 4, 5];\nconst karisikDizi = [\"Merhaba\", 123, true, { ad: \"Ahmet\" }];\n\nconsole.log(meyveler);    \/\/ [\"Elma\", \"Muz\", \"Portakal\"]\nconsole.log(sayilar);     \/\/ [1, 2, 3, 4, 5]\nconsole.log(karisikDizi); \/\/ [\"Merhaba\", 123, true, { ad: \"Ahmet\" }]<\/code><\/pre>\n<p>Bo\u015f bir dizi olu\u015fturmak i\u00e7in sadece <code>[]<\/code> kullanabilirsiniz:<\/p>\n<pre><code class=\"language-javascript\">const bosDizi = [];\nconsole.log(bosDizi); \/\/ []<\/code><\/pre>\n<h5><code>new Array()<\/code> Yap\u0131c\u0131 Fonksiyonu<\/h5>\n<p>Dizileri <code>Array<\/code> yap\u0131c\u0131 fonksiyonunu kullanarak da olu\u015fturabilirsiniz. Ancak, bu y\u00f6ntem genellikle dizi literalinden daha az tercih edilir \u00e7\u00fcnk\u00fc baz\u0131 durumlarda kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir.<\/p>\n<p>Tek bir say\u0131sal arg\u00fcmanla \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, bu say\u0131 dizinin eleman say\u0131s\u0131 olarak yorumlan\u0131r ve dizi bo\u015f elemanlarla (empty slots) doldurulur:<\/p>\n<pre><code class=\"language-javascript\">const besElemanliDizi = new Array(5);\nconsole.log(besElemanliDizi); \/\/ [empty \u00d7 5]\nconsole.log(besElemanliDizi.length); \/\/ 5<\/code><\/pre>\n<p>Birden fazla arg\u00fcmanla veya tek bir say\u0131sal olmayan arg\u00fcmanla \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, arg\u00fcmanlar dizinin elemanlar\u0131 olarak kabul edilir:<\/p>\n<pre><code class=\"language-javascript\">const harfler = new Array(\"a\", \"b\", \"c\");\nconsole.log(harfler); \/\/ [\"a\", \"b\", \"c\"]\n\nconst tekElemanliDizi = new Array(\"Merhaba\");\nconsole.log(tekElemanliDizi); \/\/ [\"Merhaba\"]<\/code><\/pre>\n<p><code>new Array()<\/code> kullan\u0131m\u0131, \u00f6zellikle tek bir say\u0131sal arg\u00fcman verildi\u011finde, beklenmedik davran\u0131\u015flara yol a\u00e7abilece\u011fi i\u00e7in genellikle dizi literalinin kullan\u0131lmas\u0131 \u00f6nerilir.<\/p>\n<h5><code>Array.of()<\/code> Metodu<\/h5>\n<p><code>Array.of()<\/code> metodu, <code>new Array()<\/code> yap\u0131c\u0131 fonksiyonunun tek say\u0131sal arg\u00fcmanla ilgili kafa kar\u0131\u015f\u0131kl\u0131\u011f\u0131n\u0131 giderir. Bu metot, kendisine verilen t\u00fcm arg\u00fcmanlar\u0131 eleman olarak i\u00e7eren yeni bir dizi olu\u015fturur.<\/p>\n<pre><code class=\"language-javascript\">const diziOf = Array.of(1, 2, 3, \"d\u00f6rt\");\nconsole.log(diziOf); \/\/ [1, 2, 3, \"d\u00f6rt\"]\n\nconst tekSayiOf = Array.of(7);\nconsole.log(tekSayiOf); \/\/ [7]<\/code><\/pre>\n<p><code>Array.of()<\/code> her zaman arg\u00fcmanlar\u0131 eleman olarak kabul eder, asla dizinin uzunlu\u011fu olarak de\u011fil.<\/p>\n<h5><code>Array.from()<\/code> Metodu<\/h5>\n<p><code>Array.from()<\/code> metodu, dizi benzeri (array-like) veya yinelenebilir (iterable) bir nesneden yeni bir <code>Array<\/code> \u00f6rne\u011fi olu\u015fturur. Bu, \u00f6zellikle DOM eleman listeleri (<code>NodeList<\/code>) veya <code>arguments<\/code> nesnesi gibi dizi benzeri yap\u0131lar\u0131 ger\u00e7ek dizilere d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Merhaba\";\nconst harflerDizisi = Array.from(metin);\nconsole.log(harflerDizisi); \/\/ [\"M\", \"e\", \"r\", \"h\", \"a\", \"b\", \"a\"]\n\n\/\/ Dizi benzeri bir nesneden\nconst diziBenzeri = { 0: 'a', 1: 'b', 2: 'c', length: 3 };\nconst gercekDizi = Array.from(diziBenzeri);\nconsole.log(gercekDizi); \/\/ [\"a\", \"b\", \"c\"]\n\n\/\/ \u0130kinci bir arg\u00fcman olarak bir map fonksiyonu da alabilir\nconst sayilarKare = Array.from([1, 2, 3], x => x * x);\nconsole.log(sayilarKare); \/\/ [1, 4, 9]<\/code><\/pre>\n<p><code>Array.from()<\/code> g\u00fc\u00e7l\u00fc bir metottur ve \u00f6zellikle fonksiyonel programlama paradigmalar\u0131nda veri d\u00f6n\u00fc\u015f\u00fcmleri i\u00e7in s\u0131k\u00e7a kullan\u0131l\u0131r.<\/p>\n<h4>Dizi Elemanlar\u0131na Eri\u015fim ve Uzunluk<\/h4>\n<p>Dizi elemanlar\u0131na eri\u015fim, indeksleme operat\u00f6r\u00fc <code>[]<\/code> kullan\u0131larak yap\u0131l\u0131r. Diziler s\u0131f\u0131r tabanl\u0131 indekslendi\u011fi i\u00e7in, ilk eleman\u0131n indeksi 0, ikincinin 1 vb. \u015feklindedir.<\/p>\n<pre><code class=\"language-javascript\">const renkler = [\"K\u0131rm\u0131z\u0131\", \"Ye\u015fil\", \"Mavi\"];\n\nconsole.log(renkler[0]); \/\/ \"K\u0131rm\u0131z\u0131\"\nconsole.log(renkler[1]); \/\/ \"Ye\u015fil\"\nconsole.log(renkler[2]); \/\/ \"Mavi\"\nconsole.log(renkler[3]); \/\/ undefined (3. indeksde eleman yok)<\/code><\/pre>\n<h5><code>length<\/code> \u00d6zelli\u011fi<\/h5>\n<p>Bir dizinin ka\u00e7 eleman i\u00e7erdi\u011fini \u00f6\u011frenmek i\u00e7in <code>length<\/code> \u00f6zelli\u011fini kullan\u0131r\u0131z. Bu \u00f6zellik, dizideki eleman say\u0131s\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">const urunler = [\"Laptop\", \"Mouse\", \"Klavye\"];\nconsole.log(urunler.length); \/\/ 3\n\nurunler[3] = \"Monit\u00f6r\"; \/\/ Yeni eleman ekleme\nconsole.log(urunler.length); \/\/ 4\n\nurunler.length = 2; \/\/ Diziyi k\u0131saltma (fazla elemanlar silinir)\nconsole.log(urunler); \/\/ [\"Laptop\", \"Mouse\"]\nconsole.log(urunler.length); \/\/ 2<\/code><\/pre>\n<p><code>length<\/code> \u00f6zelli\u011fini manuel olarak de\u011fi\u015ftirmek, diziyi k\u0131saltmak veya bo\u015f elemanlar eklemek i\u00e7in kullan\u0131labilir, ancak bu genellikle do\u011frudan eleman ekleme\/\u00e7\u0131karma metotlar\u0131 kadar yayg\u0131n de\u011fildir.<\/p>\n<h3>Dizileri De\u011fi\u015ftirme ve Manip\u00fcle Etme<\/h3>\n<p>JavaScript dizileri dinamiktir; yani olu\u015fturulduktan sonra elemanlar\u0131 eklenebilir, \u00e7\u0131kar\u0131labilir veya g\u00fcncellenebilir. Bu, dizileri esnek veri yap\u0131lar\u0131 yapar.<\/p>\n<h4>Eleman Ekleme ve \u00c7\u0131karma<\/h4>\n<p>JavaScript, dizinin ba\u015f\u0131na veya sonuna eleman eklemek\/\u00e7\u0131karmak i\u00e7in \u00f6zel metotlar sunar.<\/p>\n<h5><code>push()<\/code> ve <code>pop()<\/code><\/h5>\n<p>*   <code>push()<\/code>: Dizinin sonuna bir veya daha fazla eleman ekler ve dizinin yeni uzunlu\u011funu d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <code>pop()<\/code>: Dizinin son eleman\u0131n\u0131 \u00e7\u0131kar\u0131r ve \u00e7\u0131kar\u0131lan eleman\u0131 d\u00f6nd\u00fcr\u00fcr. Dizi bo\u015fsa <code>undefined<\/code> d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">const sehirler = [\"Ankara\", \"\u0130zmir\"];\n\nsehirler.push(\"\u0130stanbul\");\nconsole.log(sehirler); \/\/ [\"Ankara\", \"\u0130zmir\", \"\u0130stanbul\"]\n\nsehirler.push(\"Bursa\", \"Adana\");\nconsole.log(sehirler); \/\/ [\"Ankara\", \"\u0130zmir\", \"\u0130stanbul\", \"Bursa\", \"Adana\"]\n\nconst cikarilanSehir = sehirler.pop();\nconsole.log(cikarilanSehir); \/\/ \"Adana\"\nconsole.log(sehirler);       \/\/ [\"Ankara\", \"\u0130zmir\", \"\u0130stanbul\", \"Bursa\"]<\/code><\/pre>\n<h5><code>unshift()<\/code> ve <code>shift()<\/code><\/h5>\n<p>*   <code>unshift()<\/code>: Dizinin ba\u015f\u0131na bir veya daha fazla eleman ekler ve dizinin yeni uzunlu\u011funu d\u00f6nd\u00fcr\u00fcr. Bu i\u015flem, mevcut elemanlar\u0131n indekslerini de\u011fi\u015ftirdi\u011fi i\u00e7in <code>push()<\/code>&#8216;a g\u00f6re daha yava\u015f olabilir.<br \/>\n*   <code>shift()<\/code>: Dizinin ilk eleman\u0131n\u0131 \u00e7\u0131kar\u0131r ve \u00e7\u0131kar\u0131lan eleman\u0131 d\u00f6nd\u00fcr\u00fcr. Dizi bo\u015fsa <code>undefined<\/code> d\u00f6nd\u00fcr\u00fcr. Bu i\u015flem de <code>pop()<\/code>&#8216;a g\u00f6re daha yava\u015f olabilir.<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [2, 3];\n\nsayilar.unshift(1);\nconsole.log(sayilar); \/\/ [1, 2, 3]\n\nsayilar.unshift(-1, 0);\nconsole.log(sayilar); \/\/ [-1, 0, 1, 2, 3]\n\nconst cikarilanSayi = sayilar.shift();\nconsole.log(cikarilanSayi); \/\/ -1\nconsole.log(sayilar);       \/\/ [0, 1, 2, 3]<\/code><\/pre>\n<h5><code>splice()<\/code>: \u00c7ok Y\u00f6nl\u00fc Manip\u00fclasyon<\/h5>\n<p><code>splice()<\/code> metodu, dizileri de\u011fi\u015ftirmek i\u00e7in en g\u00fc\u00e7l\u00fc ve esnek ara\u00e7lardan biridir. Mevcut elemanlar\u0131 kald\u0131rabilir, yeni elemanlar ekleyebilir veya her ikisini birden yapabilir.<\/p>\n<p>S\u00f6zdizimi: <code>array.splice(startIndex, deleteCount, item1, item2, ...)<\/code><\/p>\n<p>*   <code>startIndex<\/code>: De\u011fi\u015fikli\u011fin ba\u015flayaca\u011f\u0131 indeks.<br \/>\n*   <code>deleteCount<\/code>: <code>startIndex<\/code>&#8216;ten itibaren ka\u00e7 eleman\u0131n silinece\u011fi. 0 olmas\u0131 durumunda eleman silinmez.<br \/>\n*   <code>item1, item2, ...<\/code>: <code>startIndex<\/code>&#8216;ten itibaren eklenecek elemanlar.<\/p>\n<p><code>splice()<\/code> metodu, silinen elemanlar\u0131 i\u00e7eren bir dizi d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">const meyveler = [\"Elma\", \"Muz\", \"Portakal\", \"\u00c7ilek\", \"Kivi\"];\n\n\/\/ Eleman silme\nconst silinenMeyveler = meyveler.splice(1, 2); \/\/ 1. indeksten itibaren 2 eleman sil\nconsole.log(silinenMeyveler); \/\/ [\"Muz\", \"Portakal\"]\nconsole.log(meyveler);        \/\/ [\"Elma\", \"\u00c7ilek\", \"Kivi\"]\n\n\/\/ Eleman ekleme\nmeyveler.splice(1, 0, \"Armut\", \"\u00dcz\u00fcm\"); \/\/ 1. indekse eleman ekle, hi\u00e7 silme\nconsole.log(meyveler); \/\/ [\"Elma\", \"Armut\", \"\u00dcz\u00fcm\", \"\u00c7ilek\", \"Kivi\"]\n\n\/\/ Eleman de\u011fi\u015ftirme (silme ve ekleme)\nmeyveler.splice(2, 1, \"Ananas\"); \/\/ 2. indeksteki eleman\u0131 sil ve \"Ananas\" ekle\nconsole.log(meyveler); \/\/ [\"Elma\", \"Armut\", \"Ananas\", \"\u00c7ilek\", \"Kivi\"]<\/code><\/pre>\n<h4>Elemanlar\u0131 G\u00fcncelleme<\/h4>\n<p>Mevcut bir dizinin eleman\u0131n\u0131 g\u00fcncellemek i\u00e7in ilgili indeksi kullanarak do\u011frudan atama yapabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">const puanlar = [85, 92, 78, 95];\n\npuanlar[2] = 88; \/\/ 2. indeksteki eleman\u0131 g\u00fcncelle\nconsole.log(puanlar); \/\/ [85, 92, 88, 95]\n\npuanlar[4] = 100; \/\/ Olmayan bir indekse atama yapmak diziyi geni\u015fletir\nconsole.log(puanlar); \/\/ [85, 92, 88, 95, 100]<\/code><\/pre>\n<p>E\u011fer var olmayan bir indekse de\u011fer atarsan\u0131z, dizi otomatik olarak o indekse kadar geni\u015fler ve aradaki bo\u015fluklar &#8220;empty&#8221; (seyrek dizi) olarak i\u015faretlenir.<\/p>\n<h3>Diziler \u00dczerinde Yineleme (Iteration)<\/h3>\n<p>Dizilerdeki her bir eleman \u00fczerinde i\u015flem yapmak, veri i\u015fleme s\u00fcre\u00e7lerinin temelini olu\u015fturur. JavaScript, diziler \u00fczerinde yineleme yapmak i\u00e7in \u00e7e\u015fitli metotlar sunar.<\/p>\n<h4>Geleneksel D\u00f6ng\u00fcler<\/h4>\n<h5><code>for<\/code> D\u00f6ng\u00fcs\u00fc<\/h5>\n<p>Geleneksel <code>for<\/code> d\u00f6ng\u00fcs\u00fc, diziler \u00fczerinde yineleme yapman\u0131n en temel yoludur. \u0130ndeks kontrol\u00fc sa\u011flar.<\/p>\n<pre><code class=\"language-javascript\">const isimler = [\"Ali\", \"Ay\u015fe\", \"Mehmet\"];\n\nfor (let i = 0; i < isimler.length; i++) {\n    console.log(<code>Merhaba, ${isimler[i]}<\/code>);\n}\n\/\/ \u00c7\u0131kt\u0131:\n\/\/ Merhaba, Ali\n\/\/ Merhaba, Ay\u015fe\n\/\/ Merhaba, Mehmet<\/code><\/pre>\n<h5><code>for...of<\/code> D\u00f6ng\u00fcs\u00fc<\/h5>\n<p><code>for...of<\/code> d\u00f6ng\u00fcs\u00fc, ES6 ile tan\u0131t\u0131lan ve yinelenebilir nesneler (diziler, stringler, Map, Set vb.) \u00fczerinde do\u011frudan eleman de\u011ferleri \u00fczerinde yineleme yapmay\u0131 sa\u011flayan daha modern ve okunabilir bir yoldur.<\/p>\n<pre><code class=\"language-javascript\">const urunler = [\"TV\", \"Buzdolab\u0131\", \"\u00c7ama\u015f\u0131r Makinesi\"];\n\nfor (const urun of urunler) {\n    console.log(<code>\u00dcr\u00fcn: ${urun}<\/code>);\n}\n\/\/ \u00c7\u0131kt\u0131:\n\/\/ \u00dcr\u00fcn: TV\n\/\/ \u00dcr\u00fcn: Buzdolab\u0131\n\/\/ \u00dcr\u00fcn: \u00c7ama\u015f\u0131r Makinesi<\/code><\/pre>\n<p><code>for...in<\/code> d\u00f6ng\u00fcs\u00fc de vard\u0131r ancak bu, diziler i\u00e7in de\u011fil, nesne \u00f6zelliklerini yinelemek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Dizilerde kullan\u0131ld\u0131\u011f\u0131nda beklenmedik davran\u0131\u015flara yol a\u00e7abilir (\u00f6rne\u011fin, prototip zincirindeki \u00f6zellikleri de listeleyebilir). Bu nedenle diziler i\u00e7in <code>for...in<\/code> kullanmaktan ka\u00e7\u0131n\u0131lmal\u0131d\u0131r.<\/p>\n<h4>Modern Yineleme Metotlar\u0131<\/h4>\n<p>JavaScript&#8217;in modern s\u00fcr\u00fcmleri, diziler \u00fczerinde daha i\u015flevsel ve deklaratif bir yakla\u015f\u0131mla yineleme yapmam\u0131z\u0131 sa\u011flayan y\u00fcksek dereceli (higher-order) metotlar sunar.<\/p>\n<h5><code>forEach()<\/code><\/h5>\n<p><code>forEach()<\/code> metodu, dizideki her bir eleman i\u00e7in bir geri \u00e7a\u011f\u0131rma (callback) fonksiyonu \u00e7al\u0131\u015ft\u0131r\u0131r. Yeni bir dizi d\u00f6nd\u00fcrmez, sadece yan etki (side effect) olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const puanlar = [80, 90, 75];\n\npuanlar.forEach(function(puan, index) {\n    console.log(<code>${index + 1}. \u00f6\u011frencinin puan\u0131: ${puan}<\/code>);\n});\n\/\/ \u00c7\u0131kt\u0131:\n\/\/ 1. \u00f6\u011frencinin puan\u0131: 80\n\/\/ 2. \u00f6\u011frencinin puan\u0131: 90\n\/\/ 3. \u00f6\u011frencinin puan\u0131: 75<\/code><\/pre>\n<p>Arrow fonksiyonlarla daha k\u0131sa yaz\u0131labilir:<\/p>\n<pre><code class=\"language-javascript\">puanlar.forEach(puan => console.log(<code>Puan: ${puan}<\/code>));<\/code><\/pre>\n<h5><code>map()<\/code>: Yeni Dizi Olu\u015fturma<\/h5>\n<p><code>map()<\/code> metodu, dizideki her eleman i\u00e7in bir geri \u00e7a\u011f\u0131rma fonksiyonu \u00e7al\u0131\u015ft\u0131r\u0131r ve bu fonksiyonun d\u00f6nd\u00fcrd\u00fc\u011f\u00fc de\u011ferlerle yeni bir dizi olu\u015fturur. Orijinal dizi de\u011fi\u015fmez.<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [1, 2, 3, 4];\nconst kareleri = sayilar.map(sayi => sayi * sayi);\n\nconsole.log(kareleri); \/\/ [1, 4, 9, 16]\nconsole.log(sayilar);  \/\/ [1, 2, 3, 4] (orijinal dizi de\u011fi\u015fmedi)<\/code><\/pre>\n<p><code>map()<\/code> veri d\u00f6n\u00fc\u015f\u00fcmleri i\u00e7in \u00e7ok g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h5><code>filter()<\/code>: Ko\u015fula G\u00f6re Eleme<\/h5>\n<p><code>filter()<\/code> metodu, dizideki her eleman i\u00e7in bir geri \u00e7a\u011f\u0131rma fonksiyonu \u00e7al\u0131\u015ft\u0131r\u0131r ve bu fonksiyon <code>true<\/code> d\u00f6nd\u00fcren elemanlardan olu\u015fan yeni bir dizi olu\u015fturur. Orijinal dizi de\u011fi\u015fmez.<\/p>\n<pre><code class=\"language-javascript\">const yaslar = [15, 22, 18, 30, 16, 25];\nconst yetiskinYaslar = yaslar.filter(yas => yas >= 18);\n\nconsole.log(yetiskinYaslar); \/\/ [22, 18, 30, 25]\nconsole.log(yaslar);         \/\/ [15, 22, 18, 30, 16, 25] (orijinal dizi de\u011fi\u015fmedi)<\/code><\/pre>\n<h5><code>reduce()<\/code>: Tek Bir De\u011fere \u0130ndirgeme<\/h5>\n<p><code>reduce()<\/code> metodu, dizideki her eleman i\u00e7in bir geri \u00e7a\u011f\u0131rma fonksiyonu (reducer) \u00e7al\u0131\u015ft\u0131r\u0131r ve diziyi tek bir de\u011fere (say\u0131, nesne, string vb.) indirger.<\/p>\n<p>S\u00f6zdizimi: <code>array.reduce(callback(accumulator, currentValue, currentIndex, array), initialValue)<\/code><\/p>\n<p>*   <code>accumulator<\/code>: Geri \u00e7a\u011f\u0131rma fonksiyonunun \u00f6nceki \u00e7a\u011fr\u0131s\u0131ndan d\u00f6nen de\u011ferdir (veya <code>initialValue<\/code>).<br \/>\n*   <code>currentValue<\/code>: \u015eu an i\u015flenen dizi eleman\u0131.<br \/>\n*   <code>initialValue<\/code>: \u0130ste\u011fe ba\u011fl\u0131d\u0131r. <code>accumulator<\/code>&#8216;\u0131n ilk de\u011feri. Belirtilmezse, dizinin ilk eleman\u0131 kullan\u0131l\u0131r ve <code>currentValue<\/code> dizinin ikinci eleman\u0131ndan ba\u015flar.<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [1, 2, 3, 4, 5];\n\n\/\/ Toplam\u0131 bulma\nconst toplam = sayilar.reduce((acc, current) => acc + current, 0);\nconsole.log(toplam); \/\/ 15\n\n\/\/ Maksimum de\u011feri bulma\nconst maxDeger = sayilar.reduce((max, current) => (current > max ? current : max), sayilar[0]);\nconsole.log(maxDeger); \/\/ 5\n\n\/\/ D\u00fcz bir nesneye d\u00f6n\u00fc\u015ft\u00fcrme\nconst urunler = [{ id: 1, ad: \"Kalem\" }, { id: 2, ad: \"Defter\" }];\nconst urunObjesi = urunler.reduce((obj, urun) => {\n    obj[urun.id] = urun.ad;\n    return obj;\n}, {});\nconsole.log(urunObjesi); \/\/ { '1': 'Kalem', '2': 'Defter' }<\/code><\/pre>\n<p><code>reduce()<\/code>, dizileri karma\u015f\u0131k veri yap\u0131lar\u0131na d\u00f6n\u00fc\u015ft\u00fcrmek veya tek bir \u00f6zet de\u011fer elde etmek i\u00e7in inan\u0131lmaz derecede esnek bir metottur.<\/p>\n<h5><code>every()<\/code> ve <code>some()<\/code>: Ko\u015ful Kontrol\u00fc<\/h5>\n<p>*   <code>every()<\/code>: Dizideki t\u00fcm elemanlar\u0131n belirtilen bir ko\u015fulu sa\u011flay\u0131p sa\u011flamad\u0131\u011f\u0131n\u0131 kontrol eder. T\u00fcm elemanlar ko\u015fulu sa\u011flarsa <code>true<\/code>, aksi takdirde <code>false<\/code> d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <code>some()<\/code>: Dizideki en az bir eleman\u0131n belirtilen bir ko\u015fulu sa\u011flay\u0131p sa\u011flamad\u0131\u011f\u0131n\u0131 kontrol eder. En az bir eleman ko\u015fulu sa\u011flarsa <code>true<\/code>, aksi takdirde <code>false<\/code> d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">const notlar = [80, 85, 90, 75];\n\nconst hepsiGecti = notlar.every(not => not >= 70);\nconsole.log(hepsiGecti); \/\/ true (t\u00fcm notlar 70'ten b\u00fcy\u00fck veya e\u015fit)\n\nconst enAzBiriYuksek = notlar.some(not => not > 90);\nconsole.log(enAzBiriYuksek); \/\/ false (hi\u00e7bir not 90'dan b\u00fcy\u00fck de\u011fil)\n\nconst enAzBiriGecti = notlar.some(not => not >= 70);\nconsole.log(enAzBiriGecti); \/\/ true (en az biri 70'ten b\u00fcy\u00fck veya e\u015fit)<\/code><\/pre>\n<h3>Yayg\u0131n Dizi Metotlar\u0131 ve Kullan\u0131mlar\u0131<\/h3>\n<p>JavaScript dizileri, veri manip\u00fclasyonu i\u00e7in zengin bir dizi metot seti sunar. Bu metotlar, dizileri birle\u015ftirmekten, eleman aramaya, s\u0131ralamaya kadar bir\u00e7ok i\u015flemi kolayla\u015ft\u0131r\u0131r.<\/p>\n<h4>Birle\u015ftirme ve Kopyalama<\/h4>\n<h5><code>concat()<\/code><\/h5>\n<p><code>concat()<\/code> metodu, mevcut bir diziyi veya dizileri ba\u015fka dizilerle veya de\u011ferlerle birle\u015ftirerek yeni bir dizi olu\u015fturur. Orijinal diziler de\u011fi\u015fmez.<\/p>\n<pre><code class=\"language-javascript\">const dizi1 = [1, 2];\nconst dizi2 = [3, 4];\nconst dizi3 = [5, 6];\n\nconst birlesikDizi = dizi1.concat(dizi2, dizi3);\nconsole.log(birlesikDizi); \/\/ [1, 2, 3, 4, 5, 6]\nconsole.log(dizi1);        \/\/ [1, 2] (orijinal dizi de\u011fi\u015fmedi)\n\nconst diziVeDegerler = dizi1.concat(3, 4, \"be\u015f\");\nconsole.log(diziVeDegerler); \/\/ [1, 2, 3, 4, \"be\u015f\"]<\/code><\/pre>\n<h5><code>slice()<\/code><\/h5>\n<p><code>slice()<\/code> metodu, bir dizinin belirli bir k\u0131sm\u0131n\u0131 se\u00e7erek yeni bir dizi d\u00f6nd\u00fcr\u00fcr. Orijinal dizi de\u011fi\u015fmez.<\/p>\n<p>S\u00f6zdizimi: <code>array.slice(startIndex, endIndex)<\/code><\/p>\n<p>*   <code>startIndex<\/code>: Se\u00e7imin ba\u015flayaca\u011f\u0131 indeks. \u0130ste\u011fe ba\u011fl\u0131. Belirtilmezse 0&#8217;dan ba\u015flar. Negatif bir say\u0131 ise dizinin sonundan ba\u015flar.<br \/>\n*   <code>endIndex<\/code>: Se\u00e7imin bitece\u011fi indeks (bu indeks dahil de\u011fildir). \u0130ste\u011fe ba\u011fl\u0131. Belirtilmezse dizinin sonuna kadar gider. Negatif bir say\u0131 ise dizinin sonundan ba\u015flar.<\/p>\n<pre><code class=\"language-javascript\">const renkler = [\"K\u0131rm\u0131z\u0131\", \"Ye\u015fil\", \"Mavi\", \"Sar\u0131\", \"Mor\"];\n\nconst araRenkler = renkler.slice(1, 4); \/\/ 1. indeksten 4. indekse kadar (4 dahil de\u011fil)\nconsole.log(araRenkler); \/\/ [\"Ye\u015fil\", \"Mavi\", \"Sar\u0131\"]\n\nconst sonIki = renkler.slice(-2); \/\/ Sondan 2 eleman\nconsole.log(sonIki); \/\/ [\"Sar\u0131\", \"Mor\"]\n\nconst tumDiziKopya = renkler.slice(); \/\/ Dizinin s\u0131\u011f bir kopyas\u0131n\u0131 olu\u015fturur\nconsole.log(tumDiziKopya); \/\/ [\"K\u0131rm\u0131z\u0131\", \"Ye\u015fil\", \"Mavi\", \"Sar\u0131\", \"Mor\"]<\/code><\/pre>\n<h5>Spread Operat\u00f6r\u00fc (<code>...<\/code>)<\/h5>\n<p>Spread operat\u00f6r\u00fc (<code>...<\/code>), ES6 ile gelen ve bir dizinin elemanlar\u0131n\u0131 ayr\u0131 ayr\u0131 &#8220;yaymak&#8221; i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir operat\u00f6rd\u00fcr. Dizi kopyalama ve birle\u015ftirme i\u015flemlerinde <code>concat()<\/code> ve <code>slice()<\/code> yerine modern bir alternatif sunar.<\/p>\n<pre><code class=\"language-javascript\">const arr1 = [1, 2];\nconst arr2 = [3, 4];\n\n\/\/ Dizileri birle\u015ftirme\nconst birlesik = [...arr1, ...arr2, 5, 6];\nconsole.log(birlesik); \/\/ [1, 2, 3, 4, 5, 6]\n\n\/\/ Diziyi kopyalama (s\u0131\u011f kopya)\nconst kopyaArr1 = [...arr1];\nconsole.log(kopyaArr1); \/\/ [1, 2]<\/code><\/pre>\n<h4>Arama ve Bulma<\/h4>\n<h5><code>indexOf()<\/code> ve <code>lastIndexOf()<\/code><\/h5>\n<p>*   <code>indexOf()<\/code>: Belirtilen bir eleman\u0131n dizideki ilk ge\u00e7ti\u011fi indeksini d\u00f6nd\u00fcr\u00fcr. Bulunamazsa -1 d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <code>lastIndexOf()<\/code>: Belirtilen bir eleman\u0131n dizideki son ge\u00e7ti\u011fi indeksini d\u00f6nd\u00fcr\u00fcr. Bulunamazsa -1 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">const meyveler = [\"Elma\", \"Muz\", \"Elma\", \"Portakal\"];\n\nconsole.log(meyveler.indexOf(\"Elma\"));    \/\/ 0\nconsole.log(meyveler.lastIndexOf(\"Elma\")); \/\/ 2\nconsole.log(meyveler.indexOf(\"Kivi\"));    \/\/ -1<\/code><\/pre>\n<h5><code>includes()<\/code><\/h5>\n<p><code>includes()<\/code> metodu, bir dizinin belirli bir eleman\u0131 i\u00e7erip i\u00e7ermedi\u011fini kontrol eder ve <code>true<\/code> veya <code>false<\/code> d\u00f6nd\u00fcr\u00fcr. ES7 ile gelmi\u015ftir ve <code>indexOf() !== -1<\/code> kontrol\u00fcne daha okunabilir bir alternatif sunar.<\/p>\n<pre><code class=\"language-javascript\">const renkler = [\"K\u0131rm\u0131z\u0131\", \"Ye\u015fil\", \"Mavi\"];\n\nconsole.log(renkler.includes(\"Ye\u015fil\")); \/\/ true\nconsole.log(renkler.includes(\"Sar\u0131\"));  \/\/ false<\/code><\/pre>\n<h5><code>find()<\/code> ve <code>findIndex()<\/code><\/h5>\n<p>*   <code>find()<\/code>: Dizideki belirtilen bir ko\u015fulu sa\u011flayan ilk eleman\u0131n de\u011ferini d\u00f6nd\u00fcr\u00fcr. Hi\u00e7bir eleman ko\u015fulu sa\u011flamazsa <code>undefined<\/code> d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <code>findIndex()<\/code>: Dizideki belirtilen bir ko\u015fulu sa\u011flayan ilk eleman\u0131n indeksini d\u00f6nd\u00fcr\u00fcr. Hi\u00e7bir eleman ko\u015fulu sa\u011flamazsa -1 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">const kisiler = [\n    { id: 1, ad: \"Ali\" },\n    { id: 2, ad: \"Ay\u015fe\" },\n    { id: 3, ad: \"Ali\" }\n];\n\nconst ali = kisiler.find(kisi => kisi.ad === \"Ali\");\nconsole.log(ali); \/\/ { id: 1, ad: \"Ali\" }\n\nconst ayseIndex = kisiler.findIndex(kisi => kisi.ad === \"Ay\u015fe\");\nconsole.log(ayseIndex); \/\/ 1\n\nconst olmayanKisi = kisiler.find(kisi => kisi.ad === \"Can\");\nconsole.log(olmayanKisi); \/\/ undefined<\/code><\/pre>\n<h4>S\u0131ralama ve Ters \u00c7evirme<\/h4>\n<h5><code>sort()<\/code><\/h5>\n<p><code>sort()<\/code> metodu, dizinin elemanlar\u0131n\u0131 yerinde (in-place) s\u0131ralar ve s\u0131ralanm\u0131\u015f diziyi d\u00f6nd\u00fcr\u00fcr. Varsay\u0131lan olarak elemanlar\u0131 string olarak kabul eder ve Unicode karakter kodlar\u0131na g\u00f6re s\u0131ralar. Bu, say\u0131larla \u00e7al\u0131\u015f\u0131rken beklenmedik sonu\u00e7lar verebilir.<\/p>\n<pre><code class=\"language-javascript\">const harfler = [\"c\", \"a\", \"b\"];\nharfler.sort();\nconsole.log(harfler); \/\/ [\"a\", \"b\", \"c\"]\n\nconst sayilar = [10, 2, 20, 1];\nsayilar.sort();\nconsole.log(sayilar); \/\/ [1, 10, 2, 20] - Yanl\u0131\u015f s\u0131ralama!\n\n\/\/ Say\u0131lar\u0131 do\u011fru s\u0131ralamak i\u00e7in bir kar\u015f\u0131la\u015ft\u0131rma fonksiyonu gerekir\nsayilar.sort((a, b) => a - b); \/\/ K\u00fc\u00e7\u00fckten b\u00fcy\u00fc\u011fe\nconsole.log(sayilar); \/\/ [1, 2, 10, 20]\n\nsayilar.sort((a, b) => b - a); \/\/ B\u00fcy\u00fckten k\u00fc\u00e7\u00fc\u011fe\nconsole.log(sayilar); \/\/ [20, 10, 2, 1]<\/code><\/pre>\n<h5><code>reverse()<\/code><\/h5>\n<p><code>reverse()<\/code> metodu, dizinin elemanlar\u0131n\u0131n s\u0131ras\u0131n\u0131 yerinde (in-place) tersine \u00e7evirir ve tersine \u00e7evrilmi\u015f diziyi d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">const sehirler = [\"Ankara\", \"\u0130zmir\", \"\u0130stanbul\"];\nsehirler.reverse();\nconsole.log(sehirler); \/\/ [\"\u0130stanbul\", \"\u0130zmir\", \"Ankara\"]<\/code><\/pre>\n<h4>Diziyi Metne \u00c7evirme<\/h4>\n<h5><code>join()<\/code><\/h5>\n<p><code>join()<\/code> metodu, bir dizinin t\u00fcm elemanlar\u0131n\u0131 birle\u015ftirerek bir string olu\u015fturur. Elemanlar aras\u0131na iste\u011fe ba\u011fl\u0131 bir ay\u0131r\u0131c\u0131 (separator) string eklenebilir. Ay\u0131r\u0131c\u0131 belirtilmezse varsay\u0131lan olarak virg\u00fcl (<code>,<\/code>) kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const kelimeler = [\"Merhaba\", \"D\u00fcnya\", \"!\"];\nconst cumle = kelimeler.join(\" \");\nconsole.log(cumle); \/\/ \"Merhaba D\u00fcnya !\"\n\nconst sayilarStr = [1, 2, 3].join(\"-\");\nconsole.log(sayilarStr); \/\/ \"1-2-3\"<\/code><\/pre>\n<h4>\u0130\u00e7 \u0130\u00e7e Dizileri D\u00fczle\u015ftirme<\/h4>\n<h5><code>flat()<\/code> ve <code>flatMap()<\/code><\/h5>\n<p>*   <code>flat()<\/code>: \u0130\u00e7 i\u00e7e ge\u00e7mi\u015f dizileri belirtilen bir derinlik seviyesine kadar d\u00fczle\u015ftirir (flatten). Varsay\u0131lan derinlik 1&#8217;dir.<br \/>\n*   <code>flatMap()<\/code>: <code>map()<\/code> metodu gibi \u00f6nce her eleman i\u00e7in bir fonksiyon \u00e7a\u011f\u0131r\u0131r, ard\u0131ndan sonu\u00e7lar\u0131 tek bir yeni diziye d\u00fczle\u015ftirir (derinlik 1).<\/p>\n<pre><code class=\"language-javascript\">const icIceDizi = [1, [2, 3], [4, [5, 6]]];\n\nconst duzDizi1 = icIceDizi.flat();\nconsole.log(duzDizi1); \/\/ [1, 2, 3, 4, [5, 6]] (varsay\u0131lan derinlik 1)\n\nconst tamDuzDizi = icIceDizi.flat(2); \/\/ 2 derinli\u011fe kadar d\u00fczle\u015ftir\nconsole.log(tamDuzDizi); \/\/ [1, 2, 3, 4, 5, 6]\n\nconst mapVeDuzlestir = [1, 2, 3].flatMap(x => [x, x * 2]);\nconsole.log(mapVeDuzlestir); \/\/ [1, 2, 2, 4, 3, 6]<\/code><\/pre>\n<h4>Dizinin Dizi Olup Olmad\u0131\u011f\u0131n\u0131 Kontrol Etme<\/h4>\n<h5><code>Array.isArray()<\/code><\/h5>\n<p><code>Array.isArray()<\/code> metodu, verilen de\u011ferin bir dizi olup olmad\u0131\u011f\u0131n\u0131 kontrol eder ve <code>true<\/code> veya <code>false<\/code> d\u00f6nd\u00fcr\u00fcr. Bu, <code>typeof<\/code> operat\u00f6r\u00fcn\u00fcn dizi i\u00e7in &#8220;object&#8221; d\u00f6nd\u00fcrmesi nedeniyle \u00f6nemlidir.<\/p>\n<pre><code class=\"language-javascript\">const arr = [1, 2, 3];\nconst obj = { a: 1 };\nconst str = \"hello\";\n\nconsole.log(Array.isArray(arr)); \/\/ true\nconsole.log(Array.isArray(obj)); \/\/ false\nconsole.log(Array.isArray(str)); \/\/ false<\/code><\/pre>\n<h3>\u0130leri Dizi Kavramlar\u0131<\/h3>\n<p>JavaScript dizileriyle \u00e7al\u0131\u015f\u0131rken verimlili\u011fi ve kod okunabilirli\u011fini art\u0131ran baz\u0131 ileri d\u00fczey kavramlar da bulunmaktad\u0131r.<\/p>\n<h4>Spread Operat\u00f6r\u00fc ve Kopyalama<\/h4>\n<p>Daha \u00f6nce de bahsetti\u011fimiz spread operat\u00f6r\u00fc (<code>...<\/code>), dizileri kopyalamak i\u00e7in de harika bir yoldur. <code>slice()<\/code> metoduna benzer \u015fekilde s\u0131\u011f (shallow) bir kopya olu\u015fturur. Bu, \u00f6zellikle orijinal diziyi de\u011fi\u015ftirmek istemedi\u011finiz durumlarda kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const orijinalDizi = [1, 2, 3];\nconst kopyaDizi = [...orijinalDizi];\n\nconsole.log(kopyaDizi); \/\/ [1, 2, 3]\nconsole.log(kopyaDizi === orijinalDizi); \/\/ false (farkl\u0131 referanslar)\n\nkopyaDizi.push(4);\nconsole.log(orijinalDizi); \/\/ [1, 2, 3] (orijinal dizi de\u011fi\u015fmedi)\nconsole.log(kopyaDizi);    \/\/ [1, 2, 3, 4]<\/code><\/pre>\n<p>Nesneler i\u00e7eren dizilerde spread operat\u00f6r\u00fc s\u0131\u011f kopyalama yapt\u0131\u011f\u0131ndan, i\u00e7 i\u00e7e nesnelerin referanslar\u0131 ayn\u0131 kal\u0131r. Derin kopya (deep copy) i\u00e7in farkl\u0131 y\u00f6ntemler (\u00f6rne\u011fin <code>JSON.parse(JSON.stringify(array))<\/code> veya \u00f6zel kopyalama k\u00fct\u00fcphaneleri) kullanmak gerekebilir.<\/p>\n<h4>Dizi Ayr\u0131\u015ft\u0131rma (Destructuring Assignment)<\/h4>\n<p>Dizi ayr\u0131\u015ft\u0131rma, ES6 ile gelen bir \u00f6zelliktir ve dizi elemanlar\u0131n\u0131 ayr\u0131 de\u011fi\u015fkenlere ataman\u0131n daha k\u0131sa ve okunakl\u0131 bir yolunu sunar.<\/p>\n<pre><code class=\"language-javascript\">const renkler = [\"K\u0131rm\u0131z\u0131\", \"Ye\u015fil\", \"Mavi\"];\n\n\/\/ Geleneksel y\u00f6ntem\n\/\/ const ilkRenk = renkler[0];\n\/\/ const ikinciRenk = renkler[1];\n\n\/\/ Dizi ayr\u0131\u015ft\u0131rma\nconst [ilkRenk, ikinciRenk, ucuncuRenk] = renkler;\nconsole.log(ilkRenk);    \/\/ \"K\u0131rm\u0131z\u0131\"\nconsole.log(ikinciRenk); \/\/ \"Ye\u015fil\"\n\n\/\/ Kalan elemanlar\u0131 toplama (rest parameter)\nconst [baslangic, ...kalanlar] = [1, 2, 3, 4, 5];\nconsole.log(baslangic); \/\/ 1\nconsole.log(kalanlar);  \/\/ [2, 3, 4, 5]<\/code><\/pre>\n<p>Bu \u00f6zellik, \u00f6zellikle fonksiyonlardan birden fazla de\u011fer d\u00f6nd\u00fcr\u00fcld\u00fc\u011f\u00fcnde veya dizi elemanlar\u0131na h\u0131zl\u0131ca eri\u015fmek gerekti\u011finde \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>Seyrek Diziler (Sparse Arrays)<\/h4>\n<p>JavaScript dizileri seyrek olabilir, yani t\u00fcm indekslerde eleman bulunmayabilir. Bir dizinin <code>length<\/code> \u00f6zelli\u011fi, son eleman\u0131n indeksinden daha b\u00fcy\u00fck olabilir. Bu durumda, aradaki indeksler &#8220;empty&#8221; (bo\u015f yuvalar) olarak i\u015faretlenir.<\/p>\n<pre><code class=\"language-javascript\">const seyrekDizi = [1, , 3]; \/\/ 1. indeks bo\u015f\nconsole.log(seyrekDizi);         \/\/ [1, empty, 3]\nconsole.log(seyrekDizi.length);  \/\/ 3\nconsole.log(seyrekDizi[1]);      \/\/ undefined\n\nseyrekDizi[5] = 6; \/\/ Dizi otomatik olarak geni\u015fler\nconsole.log(seyrekDizi);         \/\/ [1, empty, 3, empty \u00d7 2, 6]\nconsole.log(seyrekDizi.length);  \/\/ 6<\/code><\/pre>\n<p>Seyrek dizilerle \u00e7al\u0131\u015f\u0131rken dikkatli olmak gerekir, \u00e7\u00fcnk\u00fc baz\u0131 yineleme metotlar\u0131 (\u00f6rne\u011fin <code>forEach<\/code>, <code>map<\/code>, <code>filter<\/code>) bo\u015f yuvalar\u0131 atlayabilirken, <code>for<\/code> d\u00f6ng\u00fcs\u00fc <code>undefined<\/code> de\u011ferler d\u00f6nd\u00fcrebilir.<\/p>\n<h4>Dizi Benzeri Nesneler (Array-like Objects)<\/h4>\n<p>JavaScript&#8217;te baz\u0131 nesneler dizilere benzer \u00f6zellikler g\u00f6sterir: <code>length<\/code> \u00f6zelli\u011fine sahiptirler ve elemanlar\u0131na indekslerle eri\u015filebilirler. Ancak, bu nesneler <code>push()<\/code>, <code>pop()<\/code>, <code>forEach()<\/code> gibi dizi metotlar\u0131na sahip de\u011fildirler. \u00d6rnekler:<\/p>\n<p>*   <code>arguments<\/code> nesnesi (fonksiyon i\u00e7inde)<br \/>\n*   DOM <code>NodeList<\/code> (\u00f6rne\u011fin <code>document.querySelectorAll()<\/code> taraf\u0131ndan d\u00f6nd\u00fcr\u00fclen)<br \/>\n*   <code>HTMLCollection<\/code><\/p>\n<p>Bu t\u00fcr nesneleri ger\u00e7ek bir diziye d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in <code>Array.from()<\/code> veya spread operat\u00f6r\u00fc kullan\u0131labilir:<\/p>\n<pre><code class=\"language-javascript\">function toplaSayilar() {\n    \/\/ arguments bir dizi benzeri nesnedir\n    const argsDizisi = Array.from(arguments);\n    console.log(argsDizisi); \/\/ Ger\u00e7ek bir dizi\n\n    const toplam = argsDizisi.reduce((acc, val) => acc + val, 0);\n    return toplam;\n}\n\nconsole.log(toplaSayilar(1, 2, 3)); \/\/ 6\n\n\/\/ Veya spread operat\u00f6r\u00fc ile\nfunction toplaSayilarSpread(...args) { \/\/ args art\u0131k ger\u00e7ek bir dizi\n    return args.reduce((acc, val) => acc + val, 0);\n}\nconsole.log(toplaSayilarSpread(4, 5, 6)); \/\/ 15<\/code><\/pre>\n<h4>Dizilerde De\u011fi\u015fmezlik (Immutability)<\/h4>\n<p>De\u011fi\u015fmezlik (immutability), bir veri yap\u0131s\u0131 olu\u015fturulduktan sonra de\u011fi\u015ftirilemeyece\u011fi anlam\u0131na gelir. JavaScript dizileri varsay\u0131lan olarak de\u011fi\u015febilir (mutable) yap\u0131dad\u0131r, yani <code>push()<\/code>, <code>pop()<\/code>, <code>splice()<\/code>, <code>sort()<\/code>, <code>reverse()<\/code> gibi metotlar orijinal diziyi de\u011fi\u015ftirir.<\/p>\n<p>Fonksiyonel programlama paradigmalar\u0131nda ve React gibi modern k\u00fct\u00fcphanelerde de\u011fi\u015fmezlik \u00f6nemli bir kavramd\u0131r. De\u011fi\u015fmez verilerle \u00e7al\u0131\u015fmak, kodun daha \u00f6ng\u00f6r\u00fclebilir olmas\u0131n\u0131, hatalar\u0131n azalmas\u0131n\u0131 ve paralel i\u015flemleri kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>De\u011fi\u015fmez bir \u015fekilde dizileri manip\u00fcle etmek i\u00e7in, orijinal diziyi de\u011fi\u015ftirmeyen metotlar\u0131 kullanmal\u0131 veya yeni bir dizi olu\u015fturmal\u0131s\u0131n\u0131z:<\/p>\n<p>*   <strong>Ekleme:<\/strong> <code>concat()<\/code> veya spread operat\u00f6r\u00fc (<code>...<\/code>) kullan\u0131n.<\/p>\n<pre><code class=\"language-javascript\">const orijinal = [1, 2];\n    const yeniDizi = [...orijinal, 3]; \/\/ [1, 2, 3]<\/code><\/pre>\n<p>*   <strong>Silme:<\/strong> <code>filter()<\/code> veya <code>slice()<\/code> kullan\u0131n.<\/p>\n<pre><code class=\"language-javascript\">const orijinal = [1, 2, 3];\n    const yeniDizi = orijinal.filter(item => item !== 2); \/\/ [1, 3]\n    const yeniDizi2 = [...orijinal.slice(0, 1), ...orijinal.slice(2)]; \/\/ [1, 3]<\/code><\/pre>\n<p>*   <strong>G\u00fcncelleme:<\/strong> <code>map()<\/code> veya spread operat\u00f6r\u00fc ile yeni bir dizi olu\u015fturun.<\/p>\n<pre><code class=\"language-javascript\">const orijinal = [{ id: 1, ad: \"A\" }, { id: 2, ad: \"B\" }];\n    const yeniDizi = orijinal.map(item =>\n        item.id === 2 ? { ...item, ad: \"C\" } : item\n    );\n    \/\/ [{ id: 1, ad: \"A\" }, { id: 2, ad: \"C\" }]<\/code><\/pre>\n<p>Bu yakla\u015f\u0131mlar, orijinal dizinin de\u011fi\u015fmeden kalmas\u0131n\u0131 sa\u011flar ve bu da hata ay\u0131klamay\u0131 ve uygulaman\u0131n durum y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>Performans \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p>Dizilerle \u00e7al\u0131\u015f\u0131rken performans ve kod kalitesi i\u00e7in baz\u0131 ipu\u00e7lar\u0131 ve en iyi uygulamalar \u015funlard\u0131r:<\/p>\n<h4>Do\u011fru Metodu Se\u00e7mek<\/h4>\n<p>Her dizi metodu farkl\u0131 bir amaca hizmet eder ve farkl\u0131 performans \u00f6zelliklerine sahiptir.<\/p>\n<p>*   <strong>Sadece yineleme i\u00e7in:<\/strong> <code>forEach()<\/code> veya <code>for...of<\/code> kullan\u0131n.<br \/>\n*   <strong>Yeni dizi olu\u015fturarak d\u00f6n\u00fc\u015ft\u00fcrme:<\/strong> <code>map()<\/code> kullan\u0131n.<br \/>\n*   <strong>Elemanlar\u0131 filtreleme:<\/strong> <code>filter()<\/code> kullan\u0131n.<br \/>\n*   <strong>Tek bir de\u011fer elde etme:<\/strong> <code>reduce()<\/code> kullan\u0131n.<br \/>\n*   <strong>Dizinin ba\u015f\u0131na eleman ekleme\/\u00e7\u0131karma:<\/strong> <code>unshift()<\/code> ve <code>shift()<\/code> yerine, diziyi tersine \u00e7evirip <code>push()<\/code>\/<code>pop()<\/code> kullanmak veya yeni bir dizi olu\u015fturmak daha performansl\u0131 olabilir, \u00e7\u00fcnk\u00fc <code>unshift<\/code>\/<code>shift<\/code> t\u00fcm elemanlar\u0131n indekslerini de\u011fi\u015ftirmeyi gerektirir.<br \/>\n*   <strong>Dizi kopyalama\/birle\u015ftirme:<\/strong> Spread operat\u00f6r\u00fc (<code>...<\/code>) veya <code>slice()<\/code>\/<code>concat()<\/code> kullan\u0131n. Spread operat\u00f6r\u00fc genellikle daha okunabilirdir.<\/p>\n<h4>B\u00fcy\u00fck Dizilerle \u00c7al\u0131\u015f\u0131rken<\/h4>\n<p>\u00c7ok b\u00fcy\u00fck dizilerle \u00e7al\u0131\u015f\u0131rken performans kritik hale gelebilir.<\/p>\n<p>*   <strong>Gereksiz yinelemelerden ka\u00e7\u0131n\u0131n:<\/strong> Bir i\u015flemi birden fazla ad\u0131mda yapmak yerine tek bir <code>reduce()<\/code> \u00e7a\u011fr\u0131s\u0131 ile birle\u015ftirmek bazen daha verimli olabilir.<br \/>\n*   <strong>De\u011fi\u015fmezli\u011fi g\u00f6z \u00f6n\u00fcnde bulundurun:<\/strong> B\u00fcy\u00fck dizilerde s\u0131k s\u0131k yeni diziler olu\u015fturmak bellek ve CPU maliyetini art\u0131rabilir. Duruma g\u00f6re de\u011fi\u015febilir (mutable) operasyonlar kullanmak gerekebilir, ancak bunun yan etkilerini iyi y\u00f6netmelisiniz.<br \/>\n*   <strong><code>for<\/code> d\u00f6ng\u00fcs\u00fcn\u00fcn h\u0131z\u0131:<\/strong> En temel <code>for<\/code> d\u00f6ng\u00fcs\u00fc, baz\u0131 durumlarda di\u011fer modern metotlardan daha h\u0131zl\u0131 olabilir, \u00e7\u00fcnk\u00fc daha az fonksiyon \u00e7a\u011fr\u0131s\u0131 ve overhead i\u00e7erir. Ancak \u00e7o\u011fu modern uygulamada okunabilirlik ve s\u00fcrd\u00fcr\u00fclebilirlik i\u00e7in <code>map<\/code>, <code>filter<\/code> gibi metotlar tercih edilir. Performans darbo\u011faz\u0131 olmad\u0131\u011f\u0131 s\u00fcrece bu metotlar\u0131 kullanmak genellikle iyi bir uygulamad\u0131r.<\/p>\n<h4><code>const<\/code> Kullan\u0131m\u0131<\/h4>\n<p>Bir dizinin referans\u0131n\u0131n de\u011fi\u015fmesini istemiyorsan\u0131z, diziyi <code>const<\/code> ile tan\u0131mlay\u0131n. Bu, dizinin kendisini de\u011fi\u015ftirmeyi (eleman ekleme\/\u00e7\u0131karma) engellemez, ancak dizi de\u011fi\u015fkenine ba\u015fka bir dizi ataman\u0131z\u0131 engeller.<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [1, 2, 3];\nsayilar.push(4);      \/\/ Ge\u00e7erli, dizi i\u00e7eri\u011fi de\u011fi\u015fti\nconsole.log(sayilar); \/\/ [1, 2, 3, 4]\n\n\/\/ sayilar = [5, 6]; \/\/ Hata: Assignment to constant variable.<\/code><\/pre>\n<h4>Mutable vs. Immutable Operasyonlar\u0131 Anlamak<\/h4>\n<p>Hangi dizi metodunun orijinal diziyi de\u011fi\u015ftirdi\u011fini (mutable) ve hangisinin yeni bir dizi d\u00f6nd\u00fcrd\u00fc\u011f\u00fcn\u00fc (immutable) bilmek \u00e7ok \u00f6nemlidir.<\/p>\n<p>*   <strong>Mutable:<\/strong> <code>push<\/code>, <code>pop<\/code>, <code>shift<\/code>, <code>unshift<\/code>, <code>splice<\/code>, <code>sort<\/code>, <code>reverse<\/code><br \/>\n*   <strong>Immutable:<\/strong> <code>concat<\/code>, <code>slice<\/code>, <code>map<\/code>, <code>filter<\/code>, <code>reduce<\/code>, <code>find<\/code>, <code>findIndex<\/code>, <code>includes<\/code>, <code>join<\/code>, <code>flat<\/code>, <code>flatMap<\/code> (ve spread operat\u00f6r\u00fc)<\/p>\n<p>Duruma g\u00f6re do\u011fru metodu se\u00e7mek, beklenmedik yan etkileri \u00f6nler ve kodunuzu daha g\u00fcvenilir hale getirir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>JavaScript dizileri, modern uygulama geli\u015ftirmede veri y\u00f6netimi i\u00e7in temel ve g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Dizi olu\u015fturman\u0131n farkl\u0131 yollar\u0131ndan, elemanlara eri\u015fime, dizileri manip\u00fcle etme metotlar\u0131ndan geli\u015fmi\u015f yineleme tekniklerine kadar geni\u015f bir yelpazede yetenek sunarlar. <code>map<\/code>, <code>filter<\/code>, <code>reduce<\/code> gibi modern metotlar, kodunuzu daha deklaratif, okunabilir ve bak\u0131m\u0131 kolay hale getirirken, <code>splice<\/code> gibi metotlar size detayl\u0131 kontrol sa\u011flar.<\/p>\n<p>Spread operat\u00f6r\u00fc ve dizi ayr\u0131\u015ft\u0131rma gibi ES6+ \u00f6zellikleri, dizilerle \u00e7al\u0131\u015fmay\u0131 daha keyifli ve verimli k\u0131lar. De\u011fi\u015fmezlik prensiplerini anlamak ve uygulamak, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalarda hatalar\u0131 azaltmaya yard\u0131mc\u0131 olur.<\/p>\n<p>Bu makalede ele al\u0131nan kavramlar\u0131 ve metotlar\u0131 ustal\u0131kla kullanarak, JavaScript projelerinizde veri koleksiyonlar\u0131n\u0131 etkin bir \u015fekilde y\u00f6netebilir, daha temiz, daha i\u015flevsel ve daha performansl\u0131 kodlar yazabilirsiniz. Dizilerle pratik yapmaya devam edin, farkl\u0131 senaryolarda hangi metodun en uygun oldu\u011funu deneyimleyerek \u00f6\u011frenin ve JavaScript&#8217;in bu temel yap\u0131 ta\u015f\u0131n\u0131n t\u00fcm potansiyelini ke\u015ffedin.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript&#8217;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber\nGiri\u015f: Diziler Neden Bu Kadar \u00d6nemli?\nJavaScript, modern web geli\u015ftirmenin temel ta\u015flar\u0131nd","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-31294","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;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber - 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\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript&#039;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"JavaScript&#039;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber Giri\u015f: Diziler Neden Bu Kadar \u00d6nemli? JavaScript, modern web geli\u015ftirmenin temel ta\u015flar\u0131nd\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-08T06:41:18+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=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript&#8217;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2025-10-08T06:41:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/\"},\"wordCount\":2908,\"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\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/\",\"name\":\"JavaScript'te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-08T06:41:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript&#8217;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber\"}]},{\"@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'te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber - 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\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript'te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber","og_description":"JavaScript'te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber Giri\u015f: Diziler Neden Bu Kadar \u00d6nemli? JavaScript, modern web geli\u015ftirmenin temel ta\u015flar\u0131nd","og_url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-08T06:41:18+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript&#8217;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber","datePublished":"2025-10-08T06:41:18+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/"},"wordCount":2908,"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\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/","name":"JavaScript'te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-08T06:41:18+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-dizileri-anlamak-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript&#8217;te Dizileri Anlamak: Kapsaml\u0131 Bir Rehber"}]},{"@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\/31294","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=31294"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31294\/revisions"}],"predecessor-version":[{"id":31295,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31294\/revisions\/31295"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}