{"id":35728,"date":"2025-12-03T07:40:51","date_gmt":"2025-12-03T04:40:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35728"},"modified":"2025-12-03T07:40:51","modified_gmt":"2025-12-03T04:40:51","slug":"javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/","title":{"rendered":"JavaScript&#8217;te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu"},"content":{"rendered":"<p><body><\/p>\n<h2>JavaScript&#8217;te <code>.map()<\/code> Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu<\/h2>\n<p>JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve bu dilin sundu\u011fu g\u00fc\u00e7l\u00fc dizi metotlar\u0131, veri i\u015fleme s\u00fcre\u00e7lerini hem daha verimli hem de daha okunabilir hale getirir. Bu metotlar aras\u0131nda, \u00f6zellikle veri d\u00f6n\u00fc\u015f\u00fcm\u00fc s\u00f6z konusu oldu\u011funda \u00f6ne \u00e7\u0131kanlardan biri de <code>Array.prototype.map()<\/code> metodudur. Bu makalede, <code>.map()<\/code> metodunun ne oldu\u011funu, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, neden bu kadar \u00f6nemli oldu\u011funu ve farkl\u0131 senaryolarda nas\u0131l kullan\u0131labilece\u011fini ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceleyece\u011fiz. Ayr\u0131ca, di\u011fer pop\u00fcler dizi metotlar\u0131yla kar\u015f\u0131la\u015ft\u0131rmalar yaparak, do\u011fru arac\u0131 do\u011fru zamanda se\u00e7menize yard\u0131mc\u0131 olaca\u011f\u0131z.<\/p>\n<h3>Giri\u015f: <code>.map()<\/code> Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Modern JavaScript geli\u015ftirme pratiklerinde, veri manip\u00fclasyonu ve d\u00f6n\u00fc\u015f\u00fcm\u00fc s\u00fcrekli kar\u015f\u0131la\u015f\u0131lan bir g\u00f6revdir. Bir diziye sahip oldu\u011funuzu ve bu dizinin her bir eleman\u0131n\u0131 belirli bir kurala g\u00f6re de\u011fi\u015ftirmek istedi\u011finizi d\u00fc\u015f\u00fcn\u00fcn. Geleneksel olarak, bu i\u015flemi bir <code>for<\/code> d\u00f6ng\u00fcs\u00fc veya <code>forEach<\/code> d\u00f6ng\u00fcs\u00fc ile yapabilirsiniz. Ancak, bu yakla\u015f\u0131mlar genellikle daha fazla kod sat\u0131r\u0131 gerektirir, yan etkilere a\u00e7\u0131k olabilir ve kodun okunabilirli\u011fini azaltabilir. \u0130\u015fte bu noktada <code>.map()<\/code> metodu devreye girer.<\/p>\n<p><code>.map()<\/code> metodu, bir dizinin her eleman\u0131 \u00fczerinde belirtilen bir fonksiyonu (geri \u00e7a\u011f\u0131r\u0131m fonksiyonu) \u00e7al\u0131\u015ft\u0131r\u0131r ve bu fonksiyonun d\u00f6nd\u00fcrd\u00fc\u011f\u00fc de\u011ferlerden olu\u015fan <em>yeni bir dizi<\/em> olu\u015fturur. En kritik \u00f6zelli\u011fi, orijinal diziyi de\u011fi\u015ftirmemesidir; bu, i\u015flevsel programlama prensiplerinden biri olan &#8220;de\u011fi\u015fmezlik&#8221; (immutability) ilkesine uygun hareket etti\u011fi anlam\u0131na gelir. Bu \u00f6zellik, \u00f6zellikle karma\u015f\u0131k uygulamalarda beklenmedik yan etkileri \u00f6nleyerek kodun daha \u00f6ng\u00f6r\u00fclebilir ve bak\u0131m\u0131 daha kolay olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p><code>.map()<\/code>&#8216;in \u00f6nemi, sadece veri d\u00f6n\u00fc\u015f\u00fcm\u00fcn\u00fc basitle\u015ftirmekle kalmaz, ayn\u0131 zamanda daha deklaratif (bildirimsel) bir programlama stilini te\u015fvik eder. Yani, &#8220;nas\u0131l&#8221; yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klamak yerine, &#8220;ne&#8221; yap\u0131laca\u011f\u0131n\u0131 ifade edersiniz. Bu, kodunuzu daha anla\u015f\u0131l\u0131r hale getirir ve geli\u015ftiricilerin niyetini daha h\u0131zl\u0131 kavramas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<h3>Temel Kullan\u0131m ve S\u00f6zdizimi<\/h3>\n<p><code>.map()<\/code> metodunun temel s\u00f6zdizimi olduk\u00e7a basittir:<\/p>\n<pre><code class=\"language-javascript\">const yeniDizi = orijinalDizi.map(callbackFunction(currentValue, index, array), thisArg);<\/code><\/pre>\n<p>\u015eimdi bu s\u00f6zdizimindeki her bir par\u00e7ay\u0131 inceleyelim:<\/p>\n<p>*   <strong><code>orijinalDizi<\/code><\/strong>: <code>.map()<\/code> metodunun \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 dizi. Bu dizi de\u011fi\u015fmeden kal\u0131r.<br \/>\n*   <strong><code>yeniDizi<\/code><\/strong>: <code>callbackFunction<\/code>&#8216;\u0131n her \u00e7a\u011fr\u0131s\u0131ndan d\u00f6nen de\u011ferlerle olu\u015fturulan tamamen yeni dizi. Bu dizinin eleman say\u0131s\u0131 orijinal diziyle ayn\u0131d\u0131r.<br \/>\n*   <strong><code>callbackFunction<\/code><\/strong>: Dizideki her eleman i\u00e7in bir kez y\u00fcr\u00fct\u00fclecek olan fonksiyondur. Bu fonksiyon \u00fc\u00e7 arg\u00fcman alabilir:<br \/>\n    *   <strong><code>currentValue<\/code> (zorunlu)<\/strong>: \u0130\u015flenmekte olan dizinin mevcut eleman\u0131.<br \/>\n    *   <strong><code>index<\/code> (iste\u011fe ba\u011fl\u0131)<\/strong>: \u0130\u015flenmekte olan mevcut eleman\u0131n indeksi.<br \/>\n    *   <strong><code>array<\/code> (iste\u011fe ba\u011fl\u0131)<\/strong>: <code>.map()<\/code> metodunun \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 dizi.<br \/>\n*   <strong><code>thisArg<\/code> (iste\u011fe ba\u011fl\u0131)<\/strong>: <code>callbackFunction<\/code> i\u00e7inde <code>this<\/code> anahtar kelimesinin de\u011feri olarak kullan\u0131lacak nesne. Genellikle arrow fonksiyonlar\u0131 kullan\u0131ld\u0131\u011f\u0131nda veya <code>callbackFunction<\/code> bir s\u0131n\u0131f metodu oldu\u011funda faydal\u0131d\u0131r.<\/p>\n<p><strong>\u00d6rnek 1: Say\u0131lar\u0131 \u0130kiyle \u00c7arpma<\/strong><\/p>\n<p>Bir say\u0131 dizisindeki her say\u0131y\u0131 ikiyle \u00e7arpmak istedi\u011fimizi varsayal\u0131m:<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [1, 2, 3, 4, 5];\n\n\/\/ Geleneksel for d\u00f6ng\u00fcs\u00fc ile\nconst ciftSayilarFor = [];\nfor (let i = 0; i < sayilar.length; i++) {\n    ciftSayilarFor.push(sayilar[i] * 2);\n}\nconsole.log(ciftSayilarFor); \/\/ [2, 4, 6, 8, 10]\n\n\/\/ .map() metodu ile\nconst ciftSayilarMap = sayilar.map(function(sayi) {\n    return sayi * 2;\n});\nconsole.log(ciftSayilarMap); \/\/ [2, 4, 6, 8, 10]\n\n\/\/ Arrow fonksiyonu ile daha k\u0131sa yaz\u0131m\nconst ciftSayilarArrow = sayilar.map(sayi => sayi * 2);\nconsole.log(ciftSayilarArrow); \/\/ [2, 4, 6, 8, 10]\n\nconsole.log(sayilar); \/\/ Orijinal dizi de\u011fi\u015fmedi: [1, 2, 3, 4, 5]<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte g\u00f6rebilece\u011finiz gibi, <code>.map()<\/code> metodu ayn\u0131 sonucu daha k\u0131sa, daha okunabilir ve daha az hata yapma potansiyeli olan bir \u015fekilde elde etmemizi sa\u011flar.<\/p>\n<p><strong>\u00d6rnek 2: String Dizisini B\u00fcy\u00fck Harfe \u00c7evirme<\/strong><\/p>\n<p>Bir isim dizisindeki t\u00fcm isimleri b\u00fcy\u00fck harfe \u00e7evirmek i\u00e7in <code>.map()<\/code> kullanabiliriz:<\/p>\n<pre><code class=\"language-javascript\">const isimler = [\"ali\", \"ay\u015fe\", \"mehmet\", \"fatma\"];\n\nconst buyukHarfIsimler = isimler.map(function(isim) {\n    return isim.toUpperCase();\n});\n\nconsole.log(buyukHarfIsimler); \/\/ [\"AL\u0130\", \"AY\u015eE\", \"MEHMET\", \"FATMA\"]\nconsole.log(isimler);         \/\/ Orijinal dizi de\u011fi\u015fmedi: [\"ali\", \"ay\u015fe\", \"mehmet\", \"fatma\"]<\/code><\/pre>\n<p>Bu \u00f6rnekler, <code>.map()<\/code>&#8216;in temel i\u015flevselli\u011fini ve nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 net bir \u015fekilde g\u00f6stermektedir.<\/p>\n<h3><code>.map()<\/code> Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p><code>.map()<\/code> metodunun \u00e7al\u0131\u015fma prensibi olduk\u00e7a tutarl\u0131 ve basittir:<\/p>\n<p>1.  <strong>Iterasyon<\/strong>: <code>.map()<\/code> metodu, \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 dizinin (\u00f6rne\u011fin <code>orijinalDizi<\/code>) her bir eleman\u0131 \u00fczerinde s\u0131ras\u0131yla iterasyon yapar.<br \/>\n2.  <strong>Geri \u00c7a\u011f\u0131r\u0131m Fonksiyonunun \u00c7a\u011fr\u0131lmas\u0131<\/strong>: Her eleman i\u00e7in, <code>callbackFunction<\/code> bir kez \u00e7a\u011fr\u0131l\u0131r. Bu \u00e7a\u011fr\u0131 s\u0131ras\u0131nda, <code>currentValue<\/code> olarak mevcut eleman, <code>index<\/code> olarak eleman\u0131n konumu ve <code>array<\/code> olarak da orijinal dizi bu fonksiyona arg\u00fcman olarak iletilir.<br \/>\n3.  <strong>D\u00f6n\u00fc\u015f De\u011feri<\/strong>: <code>callbackFunction<\/code>&#8216;\u0131n her \u00e7a\u011fr\u0131s\u0131 bir de\u011fer d\u00f6nd\u00fcrmelidir. Bu de\u011fer, yeni olu\u015fturulacak dizinin ilgili konumundaki eleman olacakt\u0131r. E\u011fer <code>callbackFunction<\/code> a\u00e7\u0131k\u00e7a bir de\u011fer d\u00f6nd\u00fcrmezse (yani <code>return<\/code> ifadesi yoksa), <code>undefined<\/code> d\u00f6nd\u00fcr\u00fcl\u00fcr ve yeni dizide o konumda <code>undefined<\/code> yer al\u0131r.<br \/>\n4.  <strong>Yeni Dizi Olu\u015fturma<\/strong>: <code>.map()<\/code> metodu, <code>callbackFunction<\/code>&#8216;\u0131n d\u00f6nd\u00fcrd\u00fc\u011f\u00fc t\u00fcm bu de\u011ferleri toplayarak yepyeni bir dizi olu\u015fturur.<br \/>\n5.  <strong>De\u011fi\u015fmezlik<\/strong>: En \u00f6nemli nokta, orijinal dizinin hi\u00e7bir \u015fekilde de\u011fi\u015ftirilmemesidir. <code>.map()<\/code> her zaman yeni bir dizi d\u00f6nd\u00fcr\u00fcr ve bu yeni dizinin eleman say\u0131s\u0131 orijinal diziyle ayn\u0131d\u0131r.<\/p>\n<p>Bu mekanizma, \u00f6zellikle React gibi k\u00fct\u00fcphanelerde UI bile\u015fenlerini dinamik olarak olu\u015ftururken veya bir API&#8217;den gelen verileri belirli bir formatta d\u00f6n\u00fc\u015ft\u00fcr\u00fcrken b\u00fcy\u00fck kolayl\u0131k sa\u011flar.<\/p>\n<h3>Neden <code>.map()<\/code> Kullanmal\u0131y\u0131z? Avantajlar\u0131<\/h3>\n<p><code>.map()<\/code> metodunu kullanman\u0131n bir\u00e7ok avantaj\u0131 vard\u0131r ve bu avantajlar onu modern JavaScript geli\u015ftiricileri i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline getirir:<\/p>\n<p>*   <strong>Okunabilirlik ve Anla\u015f\u0131l\u0131rl\u0131k<\/strong>: <code>.map()<\/code> metodunun ad\u0131, yapt\u0131\u011f\u0131 i\u015fi do\u011frudan belirtir: &#8220;bir diziyi ba\u015fka bir diziye d\u00f6n\u00fc\u015ft\u00fcrmek&#8221;. Bu, kodun amac\u0131n\u0131 ilk bak\u0131\u015fta anlamay\u0131 kolayla\u015ft\u0131r\u0131r. Geleneksel <code>for<\/code> d\u00f6ng\u00fclerinde, d\u00f6ng\u00fcn\u00fcn ne yapt\u0131\u011f\u0131n\u0131 anlamak i\u00e7in d\u00f6ng\u00fc i\u00e7indeki mant\u0131\u011f\u0131 incelemeniz gerekirken, <code>.map()<\/code> ile niyet daha a\u00e7\u0131kt\u0131r.<br \/>\n*   <strong>\u0130\u015flevsel Programlama Yakla\u015f\u0131m\u0131<\/strong>: <code>.map()<\/code> i\u015flevsel programlama prensiplerine s\u0131k\u0131 s\u0131k\u0131ya ba\u011fl\u0131d\u0131r. Yan etkilerden (side effects) ka\u00e7\u0131n\u0131r, yani orijinal veriyi de\u011fi\u015ftirmez. Bu, kodun daha \u00f6ng\u00f6r\u00fclebilir olmas\u0131n\u0131 sa\u011flar ve hatalar\u0131 azalt\u0131r. Her zaman ayn\u0131 girdi i\u00e7in ayn\u0131 \u00e7\u0131kt\u0131y\u0131 \u00fcretir (saf fonksiyon).<br \/>\n*   <strong>De\u011fi\u015fmezlik (Immutability)<\/strong>: Orijinal diziyi de\u011fi\u015ftirmemesi, <code>map<\/code>&#8216;in en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biridir. Bu, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalarda veri ak\u0131\u015f\u0131n\u0131 y\u00f6netirken \u00e7ok \u00f6nemlidir. Orijinal verinin bozulmad\u0131\u011f\u0131ndan emin olmak, hata ay\u0131klamay\u0131 kolayla\u015ft\u0131r\u0131r ve beklenmedik durumlar\u0131 engeller.<br \/>\n*   <strong>Daha Az Hata<\/strong>: Geleneksel <code>for<\/code> d\u00f6ng\u00fcleri, d\u00f6ng\u00fc de\u011fi\u015fkenlerini yanl\u0131\u015f ba\u015flatma, yanl\u0131\u015f sonland\u0131rma veya indeks hatalar\u0131 gibi yayg\u0131n hata kaynaklar\u0131na sahiptir. <code>.map()<\/code> bu t\u00fcr d\u00f6ng\u00fc y\u00f6netim detaylar\u0131n\u0131 soyutlayarak, geli\u015ftiricinin sadece d\u00f6n\u00fc\u015f\u00fcm mant\u0131\u011f\u0131na odaklanmas\u0131n\u0131 sa\u011flar ve bu t\u00fcr hatalar\u0131 ortadan kald\u0131r\u0131r.<br \/>\n*   <strong>Zincirleme (Chaining)<\/strong>: <code>.map()<\/code> yeni bir dizi d\u00f6nd\u00fcrd\u00fc\u011f\u00fc i\u00e7in, di\u011fer dizi metotlar\u0131yla (\u00f6rne\u011fin <code>filter()<\/code>, <code>reduce()<\/code>) kolayca zincirlenebilir. Bu, karma\u015f\u0131k veri i\u015fleme ad\u0131mlar\u0131n\u0131 tek bir ak\u0131c\u0131 ve okunabilir ifadeyle birle\u015ftirmenizi sa\u011flar.<br \/>\n*   <strong>Modern JavaScript Prati\u011fi<\/strong>: <code>.map()<\/code> ve benzeri dizi metotlar\u0131, g\u00fcn\u00fcm\u00fcz JavaScript ekosisteminde end\u00fcstri standard\u0131 haline gelmi\u015ftir. Bu metotlar\u0131 kullanmak, kodunuzu daha modern, s\u00fcrd\u00fcr\u00fclebilir ve di\u011fer geli\u015ftiriciler taraf\u0131ndan daha kolay anla\u015f\u0131labilir k\u0131lar.<\/p>\n<p>Bu avantajlar, <code>.map()<\/code>&#8216;i sadece bir veri d\u00f6n\u00fc\u015f\u00fcm arac\u0131 olmaktan \u00e7\u0131kar\u0131p, temiz, verimli ve g\u00fcvenilir JavaScript kodu yazmak i\u00e7in temel bir yap\u0131 ta\u015f\u0131 haline getirir.<\/p>\n<h3><code>.map()<\/code> ve Di\u011fer Dizi Metotlar\u0131 Aras\u0131ndaki Farklar<\/h3>\n<p>JavaScript&#8217;te <code>.map()<\/code>&#8216;e benzer g\u00f6r\u00fcnen veya onunla birlikte kullan\u0131lan ba\u015fka dizi metotlar\u0131 da vard\u0131r. Bunlar\u0131 anlamak, her bir metodun ne zaman ve neden kullan\u0131laca\u011f\u0131n\u0131 belirlemek i\u00e7in \u00e7ok \u00f6nemlidir.<\/p>\n<h4><code>forEach()<\/code> ile Fark\u0131<\/h4>\n<p><code>forEach()<\/code> metodu da bir dizinin her eleman\u0131 \u00fczerinde bir geri \u00e7a\u011f\u0131r\u0131m fonksiyonu \u00e7al\u0131\u015ft\u0131r\u0131r, t\u0131pk\u0131 <code>.map()<\/code> gibi. Ancak temel ve en \u00f6nemli fark, <code>forEach()<\/code>&#8216;in <strong>herhangi bir de\u011fer d\u00f6nd\u00fcrmemesi<\/strong>dir. <code>forEach()<\/code> her zaman <code>undefined<\/code> d\u00f6nd\u00fcr\u00fcr. Amac\u0131, her eleman i\u00e7in bir yan etki (\u00f6rne\u011fin, konsola yazd\u0131rma, bir DOM eleman\u0131n\u0131 g\u00fcncelleme) ger\u00e7ekle\u015ftirmektir, yeni bir dizi olu\u015fturmak de\u011fildir.<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [1, 2, 3];\n\n\/\/ .forEach() ile: Yan etki olu\u015fturur, yeni dizi d\u00f6nd\u00fcrmez\nlet toplam = 0;\nconst forEachSonuc = sayilar.forEach(sayi => {\n    toplam += sayi;\n    console.log(<code>forEach: Mevcut say\u0131 ${sayi}<\/code>);\n});\nconsole.log(\"forEach sonucu:\", forEachSonuc); \/\/ undefined\nconsole.log(\"Toplam:\", toplam); \/\/ 6\n\n\/\/ .map() ile: Yeni dizi d\u00f6nd\u00fcr\u00fcr, yan etki olu\u015fturmaz (genellikle)\nconst mapSonuc = sayilar.map(sayi => sayi * 2);\nconsole.log(\"map sonucu:\", mapSonuc); \/\/ [2, 4, 6]<\/code><\/pre>\n<p><strong>Ne zaman hangisini kullanmal\u0131?<\/strong><br \/>\n*   <strong><code>forEach()<\/code><\/strong>: Bir dizinin her eleman\u0131 \u00fczerinde bir i\u015flem yapman\u0131z ve bu i\u015flem sonucunda yeni bir diziye ihtiyac\u0131n\u0131z olmamas\u0131 durumunda. \u00d6rne\u011fin, bir veritaban\u0131na her eleman\u0131 kaydetmek, bir log dosyas\u0131na yazmak veya bir UI eleman\u0131n\u0131 g\u00fcncellemek gibi yan etkiler i\u00e7in idealdir.<br \/>\n*   <strong><code>map()<\/code><\/strong>: Bir dizinin her eleman\u0131n\u0131 d\u00f6n\u00fc\u015ft\u00fcrerek, ayn\u0131 uzunlukta yeni bir dizi olu\u015fturman\u0131z gerekti\u011finde. Orijinal dizinin de\u011fi\u015fmeden kalmas\u0131 ve d\u00f6n\u00fc\u015f\u00fcm sonucunu kullanman\u0131z gerekti\u011fi senaryolarda tercih edilir.<\/p>\n<h4><code>filter()<\/code> ile Fark\u0131<\/h4>\n<p><code>filter()<\/code> metodu da <code>.map()<\/code> gibi yeni bir dizi d\u00f6nd\u00fcr\u00fcr ve orijinal diziyi de\u011fi\u015ftirmez. Ancak <code>filter()<\/code>&#8216;\u0131n amac\u0131, bir dizideki elemanlar\u0131 belirli bir ko\u015fula g\u00f6re &#8220;filtrelemek&#8221;tir. <code>callbackFunction<\/code>, her eleman i\u00e7in <code>true<\/code> veya <code>false<\/code> d\u00f6nd\u00fcrmelidir. E\u011fer <code>true<\/code> d\u00f6nerse, o eleman yeni diziye dahil edilir; <code>false<\/code> d\u00f6nerse, dahil edilmez. Bu nedenle, <code>filter()<\/code> taraf\u0131ndan d\u00f6nd\u00fcr\u00fclen dizinin eleman say\u0131s\u0131 orijinal diziden daha az veya e\u015fit olabilir.<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [1, 2, 3, 4, 5, 6];\n\n\/\/ .filter() ile: Belirli bir ko\u015fulu sa\u011flayan elemanlar\u0131 se\u00e7er\nconst ciftSayilar = sayilar.filter(sayi => sayi % 2 === 0);\nconsole.log(\"Filtrelenmi\u015f \u00e7ift say\u0131lar:\", ciftSayilar); \/\/ [2, 4, 6]\nconsole.log(\"Orijinal say\u0131lar:\", sayilar);            \/\/ [1, 2, 3, 4, 5, 6]\n\n\/\/ .map() ile: Her eleman\u0131 d\u00f6n\u00fc\u015ft\u00fcr\u00fcr, eleman say\u0131s\u0131 de\u011fi\u015fmez\nconst karesiAlinmisSayilar = sayilar.map(sayi => sayi * sayi);\nconsole.log(\"Karesi al\u0131nm\u0131\u015f say\u0131lar:\", karesiAlinmisSayilar); \/\/ [1, 4, 9, 16, 25, 36]<\/code><\/pre>\n<p><strong>Ne zaman hangisini kullanmal\u0131?<\/strong><br \/>\n*   <strong><code>filter()<\/code><\/strong>: Bir diziden belirli kriterlere uyan elemanlar\u0131 ay\u0131klaman\u0131z ve orijinal dizinin bir alt k\u00fcmesini olu\u015fturman\u0131z gerekti\u011finde.<br \/>\n*   <strong><code>map()<\/code><\/strong>: Bir dizinin her eleman\u0131n\u0131 d\u00f6n\u00fc\u015ft\u00fcrmeniz ve ayn\u0131 say\u0131da elemana sahip yeni bir diziye ihtiyac\u0131n\u0131z oldu\u011funda.<\/p>\n<p><strong>Birlikte Kullan\u0131m (Zincirleme):<\/strong><br \/>\n<code>filter()<\/code> ve <code>map()<\/code> genellikle birlikte zincirlenerek karma\u015f\u0131k d\u00f6n\u00fc\u015f\u00fcmler ger\u00e7ekle\u015ftirilir:<\/p>\n<pre><code class=\"language-javascript\">const urunler = [\n    { id: 1, ad: \"Laptop\", fiyat: 1200, stok: 10 },\n    { id: 2, ad: \"Fare\", fiyat: 25, stok: 0 },\n    { id: 3, ad: \"Klavye\", fiyat: 75, stok: 5 },\n    { id: 4, ad: \"Monit\u00f6r\", fiyat: 300, stok: 12 }\n];\n\n\/\/ Stokta olan \u00fcr\u00fcnlerin sadece adlar\u0131n\u0131 ve indirimli fiyatlar\u0131n\u0131 (fiyat*0.9) alal\u0131m\nconst indirimliUrunAdlari = urunler\n    .filter(urun => urun.stok > 0) \/\/ Sadece stokta olanlar\u0131 filtrele\n    .map(urun => ({\n        ad: urun.ad,\n        indirimliFiyat: urun.fiyat * 0.9\n    })); \/\/ Her birini yeni bir nesneye d\u00f6n\u00fc\u015ft\u00fcr\n\nconsole.log(indirimliUrunAdlari);\n\/*\n[\n  { ad: 'Laptop', indirimliFiyat: 1080 },\n  { ad: 'Klavye', indirimliFiyat: 67.5 },\n  { ad: 'Monit\u00f6r', indirimliFiyat: 270 }\n]\n*\/<\/code><\/pre>\n<p>Bu \u00f6rnek, zincirlemenin ne kadar g\u00fc\u00e7l\u00fc olabilece\u011fini g\u00f6stermektedir. \u00d6nce filtreleme, sonra d\u00f6n\u00fc\u015ft\u00fcrme i\u015flemi tek bir ak\u0131c\u0131 sat\u0131rda yap\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h4><code>reduce()<\/code> ile Fark\u0131<\/h4>\n<p><code>reduce()<\/code> metodu, bir dizideki t\u00fcm elemanlar\u0131 tek bir de\u011fere (say\u0131, dize, nesne, dizi vb.) indirgemek i\u00e7in kullan\u0131l\u0131r. Bu metodun <code>callbackFunction<\/code>&#8216;\u0131 d\u00f6rt arg\u00fcman al\u0131r: <code>accumulator<\/code> (toplay\u0131c\u0131), <code>currentValue<\/code> (mevcut de\u011fer), <code>currentIndex<\/code> (mevcut indeks) ve <code>array<\/code> (dizi). <code>accumulator<\/code>, her iterasyonda geri \u00e7a\u011f\u0131r\u0131m fonksiyonunun d\u00f6nd\u00fcrd\u00fc\u011f\u00fc de\u011feri tutar ve bir sonraki iterasyonda ba\u015flang\u0131\u00e7 de\u011feri olarak kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [1, 2, 3, 4, 5];\n\n\/\/ .reduce() ile: T\u00fcm elemanlar\u0131n toplam\u0131n\u0131 bulma (tek bir de\u011fere indirgeme)\nconst toplam = sayilar.reduce((acc, current) => acc + current, 0); \/\/ 0 ba\u015flang\u0131\u00e7 de\u011feri\nconsole.log(\"Toplam (reduce):\", toplam); \/\/ 15\n\n\/\/ .map() ile: Her eleman\u0131 d\u00f6n\u00fc\u015ft\u00fcrerek yeni bir dizi olu\u015fturma\nconst kareler = sayilar.map(sayi => sayi * sayi);\nconsole.log(\"Kareler (map):\", kareler); \/\/ [1, 4, 9, 16, 25]<\/code><\/pre>\n<p><strong>Ne zaman hangisini kullanmal\u0131?<\/strong><br \/>\n*   <strong><code>reduce()<\/code><\/strong>: Bir dizi elemanlar\u0131n\u0131 tek bir sonuca (bir toplam, ortalama, tek bir nesne, tek bir birle\u015ftirilmi\u015f dize vb.) d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekti\u011finde.<br \/>\n*   <strong><code>map()<\/code><\/strong>: Bir dizinin her eleman\u0131n\u0131 d\u00f6n\u00fc\u015ft\u00fcrerek, ayn\u0131 uzunlukta yeni bir dizi olu\u015fturman\u0131z gerekti\u011finde.<\/p>\n<p>Her \u00fc\u00e7 metot (<code>map<\/code>, <code>filter<\/code>, <code>reduce<\/code>) de orijinal diziyi de\u011fi\u015ftirmez ve yeni bir dizi (veya <code>reduce<\/code> durumunda tek bir de\u011fer) d\u00f6nd\u00fcr\u00fcr. Bu da onlar\u0131 i\u015flevsel programlama i\u00e7in harika ara\u00e7lar yapar.<\/p>\n<h3>Pratik Kullan\u0131m Senaryolar\u0131 ve \u0130leri D\u00fczey \u00d6rnekler<\/h3>\n<p><code>.map()<\/code> metodunun g\u00fcc\u00fc, sadece basit d\u00f6n\u00fc\u015f\u00fcmlerle s\u0131n\u0131rl\u0131 de\u011fildir. Ger\u00e7ek d\u00fcnya uygulamalar\u0131nda, karma\u015f\u0131k veri yap\u0131lar\u0131n\u0131 manip\u00fcle etmekten kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmaya kadar geni\u015f bir yelpazede kullan\u0131l\u0131r.<\/p>\n<h4>Nesne Dizilerini D\u00f6n\u00fc\u015ft\u00fcrme<\/h4>\n<p>API&#8217;lerden gelen veriler genellikle karma\u015f\u0131k nesne dizileri \u015feklinde olur. Bu verileri kullan\u0131c\u0131 aray\u00fcz\u00fcnde g\u00f6stermeden \u00f6nce belirli bir formata d\u00f6n\u00fc\u015ft\u00fcrmek yayg\u0131n bir ihtiya\u00e7t\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const kullanicilarApiVerisi = [\n    { id: \"user1\", firstName: \"Ali\", lastName: \"Can\", email: \"ali@example.com\", isActive: true },\n    { id: \"user2\", firstName: \"Ay\u015fe\", lastName: \"Y\u0131lmaz\", email: \"ayse@example.com\", isActive: false },\n    { id: \"user3\", firstName: \"Mehmet\", lastName: \"Demir\", email: \"mehmet@example.com\", isActive: true }\n];\n\n\/\/ Sadece aktif kullan\u0131c\u0131lar\u0131n tam ad\u0131n\u0131 ve e-postas\u0131n\u0131 i\u00e7eren bir dizi olu\u015ftural\u0131m\nconst aktifKullaniciBilgileri = kullanicilarApiVerisi\n    .filter(kullanici => kullanici.isActive)\n    .map(kullanici => ({\n        fullName: <code>${kullanici.firstName} ${kullanici.lastName}<\/code>,\n        contactEmail: kullanici.email\n    }));\n\nconsole.log(aktifKullaniciBilgileri);\n\/*\n[\n  { fullName: 'Ali Can', contactEmail: 'ali@example.com' },\n  { fullName: 'Mehmet Demir', contactEmail: 'mehmet@example.com' }\n]\n*\/<\/code><\/pre>\n<p>Bu \u00f6rnekte, \u00f6nce <code>filter<\/code> ile aktif kullan\u0131c\u0131lar se\u00e7iliyor, ard\u0131ndan <code>map<\/code> ile her bir kullan\u0131c\u0131 nesnesi, UI&#8217;da g\u00f6sterilmeye haz\u0131r yeni bir formatta d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcyor.<\/p>\n<h4>React\/Vue gibi Frontend \u00c7er\u00e7evelerinde Kullan\u0131m<\/h4>\n<p>Frontend \u00e7er\u00e7evelerinde, dinamik listeler veya bile\u015fen koleksiyonlar\u0131 olu\u015fturmak i\u00e7in <code>.map()<\/code> vazge\u00e7ilmezdir.<\/p>\n<p><strong>React \u00d6rne\u011fi (JSX i\u00e7inde):<\/strong><\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\n\nconst products = [\n    { id: 1, name: 'Laptop', price: 1200 },\n    { id: 2, name: 'Mouse', price: 25 },\n    { id: 3, name: 'Keyboard', price: 75 },\n];\n\nfunction ProductList() {\n    return (\n        <div>\n            <h2>\u00dcr\u00fcnlerimiz<\/h2>\n            <ul>\n                {products.map(product => (\n                    <li key={product.id}>\n                        {product.name} - ${product.price}\n                    <\/li>\n                ))}\n            <\/ul>\n        <\/div>\n    );\n}\n\nexport default ProductList;<\/code><\/pre>\n<p>Burada <code>products<\/code> dizisindeki her bir \u00fcr\u00fcn nesnesi, bir <code><\/p>\n<li><\/code> eleman\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcyor. <code>key<\/code> prop&#8217;u, React&#8217;in liste elemanlar\u0131n\u0131 verimli bir \u015fekilde g\u00fcncellemesi i\u00e7in \u00f6nemlidir ve <code>.map()<\/code> ile her zaman benzersiz bir de\u011fer d\u00f6nd\u00fcr\u00fclmelidir.<br \/>\n<h4>Ko\u015fullu D\u00f6n\u00fc\u015f\u00fcmler<\/h4>\n<p><code>callbackFunction<\/code> i\u00e7inde <code>if\/else<\/code> veya ternary operat\u00f6rleri kullanarak elemanlar\u0131 ko\u015fullu olarak d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">const puanlar = [75, 40, 90, 55, 80];\n\n\/\/ Ge\u00e7enlere \"Ge\u00e7ti\", kalanlara \"Kald\u0131\" yazal\u0131m\nconst durumlar = puanlar.map(puan => {\n    if (puan >= 50) {\n        return \"Ge\u00e7ti\";\n    } else {\n        return \"Kald\u0131\";\n    }\n});\n\nconsole.log(durumlar); \/\/ [\"Ge\u00e7ti\", \"Kald\u0131\", \"Ge\u00e7ti\", \"Ge\u00e7ti\", \"Ge\u00e7ti\"]\n\n\/\/ Ternary operat\u00f6r\u00fc ile daha k\u0131sa yaz\u0131m\nconst durumlarTernary = puanlar.map(puan => (puan >= 50 ? \"Ge\u00e7ti\" : \"Kald\u0131\"));\nconsole.log(durumlarTernary); \/\/ [\"Ge\u00e7ti\", \"Kald\u0131\", \"Ge\u00e7ti\", \"Ge\u00e7ti\", \"Ge\u00e7ti\"]<\/code><\/pre>\n<h4>Arrow Fonksiyonlar\u0131 ile Daha K\u0131sa Yaz\u0131m<\/h4>\n<p>Arrow fonksiyonlar\u0131, <code>.map()<\/code> gibi geri \u00e7a\u011f\u0131r\u0131m fonksiyonlar\u0131n\u0131 daha k\u0131sa ve okunabilir hale getirir. \u00d6zellikle tek sat\u0131rl\u0131k d\u00f6n\u00fc\u015f\u00fcmlerde bu fark belirgindir.<\/p>\n<pre><code class=\"language-javascript\">const kelimeler = [\"elma\", \"armut\", \"kiraz\"];\n\n\/\/ Geleneksel fonksiyon\nconst uzunluklarGeleneksel = kelimeler.map(function(kelime) {\n    return kelime.length;\n});\nconsole.log(uzunluklarGeleneksel); \/\/ [4, 5, 5]\n\n\/\/ Arrow fonksiyonu (tek parametre, tek ifade)\nconst uzunluklarArrow = kelimeler.map(kelime => kelime.length);\nconsole.log(uzunluklarArrow); \/\/ [4, 5, 5]\n\n\/\/ Arrow fonksiyonu (birden fazla parametre, tek ifade)\nconst indeksliKelimeler = kelimeler.map((kelime, index) => <code>${index + 1}. ${kelime}<\/code>);\nconsole.log(indeksliKelimeler); \/\/ [\"1. elma\", \"2. armut\", \"3. kiraz\"]<\/code><\/pre>\n<p>Arrow fonksiyonlar\u0131n\u0131n <code>this<\/code> ba\u011flam\u0131n\u0131 lexical olarak ba\u011flamas\u0131, yani tan\u0131mland\u0131\u011f\u0131 kapsamdaki <code>this<\/code> de\u011ferini almas\u0131, bazen <code>thisArg<\/code> kullanma ihtiyac\u0131n\u0131 ortadan kald\u0131rabilir.<\/p>\n<h4><code>thisArg<\/code> Parametresinin Kullan\u0131m\u0131<\/h4>\n<p>Nadiren de olsa, <code>callbackFunction<\/code> i\u00e7inde <code>this<\/code> anahtar kelimesini belirli bir de\u011fere ba\u011flaman\u0131z gerekebilir. <code>thisArg<\/code> parametresi bu amaca hizmet eder.<\/p>\n<pre><code class=\"language-javascript\">class Hesaplayici {\n    constructor(carpan) {\n        this.carpan = carpan;\n    }\n\n    carp(sayi) {\n        return sayi * this.carpan;\n    }\n}\n\nconst sayilar = [1, 2, 3];\nconst hesaplayici = new Hesaplayici(5);\n\n\/\/ E\u011fer thisArg kullanmazsak, carp fonksiyonundaki this undefined olur\n\/\/ const sonucYanlis = sayilar.map(hesaplayici.carp); \/\/ Hata: 'this' undefined\n\n\/\/ thisArg kullanarak hesaplayici nesnesini carp fonksiyonunun this'i olarak ba\u011flar\u0131z\nconst sonucDogru = sayilar.map(hesaplayici.carp, hesaplayici);\nconsole.log(sonucDogru); \/\/ [5, 10, 15]\n\n\/\/ Arrow fonksiyonlar\u0131 lexical this'e sahip oldu\u011fu i\u00e7in bu senaryoda daha basittir:\nconst sonucArrow = sayilar.map(sayi => hesaplayici.carp(sayi));\nconsole.log(sonucArrow); \/\/ [5, 10, 15]<\/code><\/pre>\n<p><code>thisArg<\/code> kullan\u0131m\u0131, \u00f6zellikle eski tarz fonksiyon tan\u0131mlar\u0131 veya belirli k\u00fct\u00fcphanelerle entegrasyonlarda faydal\u0131 olabilirken, modern JavaScript&#8217;te arrow fonksiyonlar\u0131 genellikle bu ihtiyac\u0131 daha zarif bir \u015fekilde kar\u015f\u0131lar.<\/p>\n<h4>Zincirleme (Chaining) Uygulamalar\u0131<\/h4>\n<p>Daha \u00f6nce de bahsedildi\u011fi gibi, <code>.map()<\/code>&#8216;in yeni bir dizi d\u00f6nd\u00fcrmesi, di\u011fer dizi metotlar\u0131yla zincirleme yapmay\u0131 m\u00fcmk\u00fcn k\u0131lar. Bu, karma\u015f\u0131k veri i\u015fleme ad\u0131mlar\u0131n\u0131 tek bir ak\u0131c\u0131 ifadede birle\u015ftirmenizi sa\u011flar.<\/p>\n<pre><code class=\"language-javascript\">const ogrenciler = [\n    { ad: \"Ay\u015fe\", notlar: [80, 90, 75], cinsiyet: \"K\" },\n    { ad: \"Ali\", notlar: [60, 50, 70], cinsiyet: \"E\" },\n    { ad: \"Fatma\", notlar: [95, 85, 90], cinsiyet: \"K\" },\n    { ad: \"Can\", notlar: [40, 30, 20], cinsiyet: \"E\" }\n];\n\n\/\/ 1. Sadece k\u0131z \u00f6\u011frencileri filtrele.\n\/\/ 2. Her bir k\u0131z \u00f6\u011frencinin not ortalamas\u0131n\u0131 hesapla.\n\/\/ 3. Ortalamas\u0131 80 ve \u00fczeri olanlar\u0131n ad\u0131n\u0131 ve ortalamas\u0131n\u0131 i\u00e7eren yeni bir dizi olu\u015ftur.\n\nconst basariliKizOgrenciler = ogrenciler\n    .filter(ogrenci => ogrenci.cinsiyet === \"K\") \/\/ K\u0131z \u00f6\u011frencileri filtrele\n    .map(ogrenci => {\n        const toplamNot = ogrenci.notlar.reduce((sum, not) => sum + not, 0);\n        const ortalama = toplamNot \/ ogrenci.notlar.length;\n        return { ad: ogrenci.ad, ortalama: ortalama }; \/\/ Ad ve ortalama i\u00e7eren nesneye d\u00f6n\u00fc\u015ft\u00fcr\n    })\n    .filter(ogrenci => ogrenci.ortalama >= 80); \/\/ Ortalamas\u0131 80 ve \u00fczeri olanlar\u0131 filtrele\n\nconsole.log(basariliKizOgrenciler);\n\/*\n[\n  { ad: 'Ay\u015fe', ortalama: 81.66666666666667 },\n  { ad: 'Fatma', ortalama: 90 }\n]\n*\/<\/code><\/pre>\n<p>Bu \u00f6rnek, <code>filter<\/code>, <code>map<\/code> ve <code>reduce<\/code> metotlar\u0131n\u0131n bir araya gelerek nas\u0131l g\u00fc\u00e7l\u00fc bir veri i\u015fleme hatt\u0131 olu\u015fturdu\u011funu g\u00f6stermektedir. Her ad\u0131mda yeni bir dizi olu\u015fturuldu\u011fu i\u00e7in orijinal <code>ogrenciler<\/code> dizisi de\u011fi\u015fmeden kal\u0131r.<\/p>\n<h3>Potansiyel Tuzaklar ve Dikkat Edilmesi Gerekenler<\/h3>\n<p><code>.map()<\/code> metodu g\u00fc\u00e7l\u00fc ve kullan\u0131\u015fl\u0131 olsa da, baz\u0131 noktalara dikkat etmek \u00f6nemlidir:<\/p>\n<p>*   <strong>Performans (B\u00fcy\u00fck Diziler)<\/strong>: \u00c7ok b\u00fcy\u00fck dizilerle \u00e7al\u0131\u015f\u0131rken (\u00f6rne\u011fin, y\u00fcz binlerce veya milyonlarca eleman), <code>.map()<\/code> gibi her eleman \u00fczerinde iterasyon yapan metotlar\u0131n performans\u0131 etkileyebilece\u011fini unutmay\u0131n. \u00c7o\u011fu web uygulamas\u0131 i\u00e7in bu bir sorun te\u015fkil etmez, ancak performans kritik uygulamalarda dikkatli olmak ve gerekti\u011finde farkl\u0131 algoritmalar veya optimize edilmi\u015f yakla\u015f\u0131mlar d\u00fc\u015f\u00fcnmek gerekebilir. Ancak genellikle, elle yaz\u0131lm\u0131\u015f bir <code>for<\/code> d\u00f6ng\u00fcs\u00fcne g\u00f6re taray\u0131c\u0131lar taraf\u0131ndan daha iyi optimize edilmi\u015f olabilir.<br \/>\n*   <strong>Bo\u015f Diziler<\/strong>: Bo\u015f bir dizi \u00fczerinde <code>.map()<\/code> \u00e7a\u011f\u0131rmak, bo\u015f bir dizi d\u00f6nd\u00fcr\u00fcr. Bu beklenen bir davran\u0131\u015ft\u0131r ve genellikle bir sorun te\u015fkil etmez:<\/p>\n<pre><code class=\"language-javascript\">const bosDizi = [];\n    const sonuc = bosDizi.map(item => item * 2);\n    console.log(sonuc); \/\/ []<\/code><\/pre>\n<p>*   <strong>Yan Etkilerden Ka\u00e7\u0131nma<\/strong>: <code>.map()<\/code>&#8216;in temel prensibi, orijinal diziyi de\u011fi\u015ftirmemektir. <code>callbackFunction<\/code> i\u00e7inde orijinal dizinin elemanlar\u0131n\u0131 veya d\u0131\u015far\u0131daki de\u011fi\u015fkenleri de\u011fi\u015ftirmekten ka\u00e7\u0131nmal\u0131s\u0131n\u0131z. Bu t\u00fcr yan etkiler, kodun \u00f6ng\u00f6r\u00fclemez hale gelmesine ve hata ay\u0131klaman\u0131n zorla\u015fmas\u0131na neden olabilir. E\u011fer yan etkilere ihtiyac\u0131n\u0131z varsa, <code>forEach()<\/code> daha uygun bir se\u00e7im olabilir.<\/p>\n<pre><code class=\"language-javascript\">const sayilar = [1, 2, 3];\n    const yanEtkiliSonuc = sayilar.map(sayi => {\n        sayilar[0] = 99; \/\/ D\u0130KKAT: Orijinal diziyi de\u011fi\u015ftiriyoruz!\n        return sayi * 2;\n    });\n    console.log(yanEtkiliSonuc); \/\/ [2, 4, 6]\n    console.log(sayilar);       \/\/ [99, 2, 3] - Orijinal dizi de\u011fi\u015fti! Bu k\u00f6t\u00fc bir pratik.<\/code><\/pre>\n<p>*   <strong>Seyrek Diziler (Sparse Arrays)<\/strong>: <code>.map()<\/code> seyrek dizilerdeki (yani baz\u0131 indekslerde eleman olmayan diziler) bo\u015f yuvalar\u0131 atlar. Bu yuvalar i\u00e7in <code>callbackFunction<\/code> \u00e7a\u011fr\u0131lmaz.<\/p>\n<pre><code class=\"language-javascript\">const seyrekDizi = [1, , 3]; \/\/ \u0130kinci eleman bo\u015f\n    const sonuc = seyrekDizi.map(sayi => sayi * 2);\n    console.log(sonuc); \/\/ [2, <empty>, 6]<\/code><\/pre>\n<p>*   <strong>Array-like Objeler<\/strong>: <code>.map()<\/code> metodu sadece ger\u00e7ek <code>Array<\/code> objeleri \u00fczerinde \u00e7a\u011fr\u0131labilir. HTMLCollection veya NodeList gibi &#8220;array-like&#8221; (dizi benzeri) objeler \u00fczerinde do\u011frudan \u00e7al\u0131\u015fmazlar. Bu t\u00fcr objeleri \u00f6nce ger\u00e7ek bir diziye d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekir (\u00f6rne\u011fin <code>Array.from()<\/code> veya spread operat\u00f6r\u00fc <code>[...]<\/code> kullanarak).<\/p>\n<pre><code class=\"language-javascript\">const divElements = document.querySelectorAll('div'); \/\/ Bir NodeList d\u00f6nd\u00fcr\u00fcr\n    \/\/ divElements.map(...) do\u011frudan \u00e7al\u0131\u015fmaz\n\n    \/\/ \u00d6nce diziye d\u00f6n\u00fc\u015ft\u00fcr\n    const divArray = Array.from(divElements);\n    const divTexts = divArray.map(div => div.textContent);\n    console.log(divTexts);<\/code><\/pre>\n<p>Bu potansiyel tuzaklar\u0131 bilmek, <code>.map()<\/code> metodunu daha g\u00fcvenli ve etkili bir \u015fekilde kullanman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>JavaScript&#8217;in <code>.map()<\/code> metodu, bir diziyi d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in sundu\u011fu basitlik, okunabilirlik ve i\u015flevsel programlama prensiplerine uygunluk sayesinde modern web geli\u015ftirmenin vazge\u00e7ilmez ara\u00e7lar\u0131ndan biridir. Orijinal diziyi de\u011fi\u015ftirmeden yeni bir dizi olu\u015fturma yetene\u011fi (de\u011fi\u015fmezlik), karma\u015f\u0131k veri ak\u0131\u015flar\u0131n\u0131 y\u00f6netmeyi ve yan etkilerden ka\u00e7\u0131nmay\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<p><code>forEach()<\/code>, <code>filter()<\/code> ve <code>reduce()<\/code> gibi di\u011fer dizi metotlar\u0131yla olan farklar\u0131n\u0131 anlamak, her bir arac\u0131 do\u011fru senaryoda kullanman\u0131z i\u00e7in kritik \u00f6neme sahiptir. <code>.map()<\/code> \u00f6zellikle, bir dizinin her eleman\u0131n\u0131 belirli bir kurala g\u00f6re d\u00f6n\u00fc\u015ft\u00fcrmeniz ve bu d\u00f6n\u00fc\u015f\u00fcm\u00fcn sonucunu yeni bir dizide toplaman\u0131z gerekti\u011finde parlar. Frontend \u00e7er\u00e7evelerinde dinamik listeler olu\u015fturmaktan, API verilerini UI i\u00e7in formatlamaya kadar bir\u00e7ok pratik senaryoda <code>.map()<\/code>&#8216;in g\u00fcc\u00fcnden faydalanabilirsiniz.<\/p>\n<p>Temiz, s\u00fcrd\u00fcr\u00fclebilir ve verimli JavaScript kodu yazmak isteyen her geli\u015ftiricinin <code>.map()<\/code> metodunu derinlemesine anlamas\u0131 ve ustaca kullanmas\u0131 gerekir. Bu makalede ele al\u0131nan \u00f6rnekler ve a\u00e7\u0131klamalar, bu g\u00fc\u00e7l\u00fc metodu kendi projelerinizde g\u00fcvenle kullanman\u0131z i\u00e7in sa\u011flam bir temel olu\u015fturacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript&#8217;te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu\nJavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve bu dilin sundu\u011fu","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-35728","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 .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu - 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-map-metodu-dizileri-donusturmenin-guclu-yolu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript&#039;te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu\" \/>\n<meta property=\"og:description\" content=\"JavaScript&#039;te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve bu dilin sundu\u011fu\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-03T04:40:51+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\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript&#8217;te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu\",\"datePublished\":\"2025-12-03T04:40:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/\"},\"wordCount\":2584,\"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-map-metodu-dizileri-donusturmenin-guclu-yolu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/\",\"name\":\"JavaScript'te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-03T04:40:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript&#8217;te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu\"}]},{\"@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 .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu - 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-map-metodu-dizileri-donusturmenin-guclu-yolu\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript'te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu","og_description":"JavaScript'te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve bu dilin sundu\u011fu","og_url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-03T04:40:51+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\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript&#8217;te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu","datePublished":"2025-12-03T04:40:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/"},"wordCount":2584,"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-map-metodu-dizileri-donusturmenin-guclu-yolu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/","url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/","name":"JavaScript'te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-03T04:40:51+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-map-metodu-dizileri-donusturmenin-guclu-yolu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript&#8217;te .map() Metodu: Dizileri D\u00f6n\u00fc\u015ft\u00fcrmenin G\u00fc\u00e7l\u00fc Yolu"}]},{"@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\/35728","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=35728"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35728\/revisions"}],"predecessor-version":[{"id":35729,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35728\/revisions\/35729"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}