JavaScript Fundamentals

JavaScript Karma Tabloları: Nesneler vs. Map Nesnesi

Spread the love

JavaScript Hashmap’ler: Nesneler ve Map Nesnesi Karşılaştırması

JavaScript’te bazı diğer dillerdeki gibi doğrudan bir “HashMap” karşılığı yoktur. Bununla birlikte, benzer işlevselliğe iki temel yaklaşım kullanarak ulaşabiliriz: düz JavaScript nesneleri ve yerleşik Map nesnesi. Bu makale, her ikisini de inceleyerek güçlü ve zayıf yönlerini karşılaştırarak ihtiyaçlarınız için en iyi yaklaşımı seçmenize yardımcı olmayı amaçlamaktadır.

İçindekiler

Nesneleri Hashmap Olarak Kullanma

JavaScript nesneleri basit hashmap’ler olarak işlev görebilir. İlişkili değerlere erişmek için dize anahtarlar kullanırlar. Bu yaklaşım basittir ancak sınırlamaları vardır.

Örnek:


const myHashMap = {}; // Boş bir nesne oluşturun

// Anahtar-değer çiftleri ekleyin
myHashMap.apple = 1;
myHashMap.banana = 2;
myHashMap.cherry = 3;

// Değerlere erişin
console.log(myHashMap.banana); // Çıktı: 2

// Bir anahtarın var olup olmadığını kontrol edin
console.log('apple' in myHashMap); // Çıktı: true

// Bir anahtar-değer çiftini silin
delete myHashMap.banana;

// Anahtar-değer çiftleri üzerinde yineleyin (Sıra garanti edilmez)
for (const key in myHashMap) {
  console.log(key, myHashMap[key]);
}

Avantajlar:

  • JavaScript geliştiricileri için basit ve tanıdık.
  • Harici bağımlılık yok.

Dezavantajlar:

  • Anahtarlar yalnızca dizelerle (veya örtük olarak dizelere dönüştürülen değerlerle) sınırlıdır.
  • Yerleşik boyut özelliği yok; boyutu manuel olarak takip etmeniz gerekir.
  • get, set, has vb. gibi yerleşik yöntemlerden yoksundur.
  • Anahtar sırası garanti edilmez.

Map Nesnesini Kullanma

Map nesnesi (ES6’da tanıtıldı) daha sağlam bir çözüm sunar. Anahtar olarak herhangi bir veri türünü destekler, tür zorlama sorunlarından kaçınır ve verimli manipülasyon için yerleşik yöntemler sağlar.

Örnek:


const myMap = new Map();

// Anahtar-değer çiftleri ekleyin
myMap.set("apple", 1);
myMap.set(123, "number"); // Anahtar olarak sayı
myMap.set({ a: 1 }, "object"); // Anahtar olarak nesne

// Değerlere erişin
console.log(myMap.get("apple")); // Çıktı: 1
console.log(myMap.get(123));     // Çıktı: "number"

// Bir anahtarın var olup olmadığını kontrol edin
console.log(myMap.has("apple")); // Çıktı: true

// Bir anahtar-değer çiftini silin
myMap.delete("apple");

// Boyutu alın
console.log(myMap.size); // Çıktı: 2

// Anahtar-değer çiftleri üzerinde yineleyin (sıra korunur)
for (const [key, value] of myMap) {
  console.log(key, value);
}

Avantajlar:

  • Anahtar olarak herhangi bir veri türünü destekler.
  • Yerleşik yöntemler sağlar (set, get, has, delete, size).
  • for...of döngüleriyle verimli yineleme.
  • Ekleme sırasını korur.

Dezavantajlar:

  • ES6 uyumluluğu gerektirir (polyfill’ler mevcut olsa da).

Sonuç

Düz JavaScript nesneleri basit hashmap benzeri davranışlar için yeterli olsa da, Map nesnesi üstün özellikleri ve verimliliği nedeniyle genellikle önerilir. Tarayıcı uyumluluğu ile ciddi şekilde sınırlı değilseniz, Map çoğu modern JavaScript projesi için tercih edilen seçimdir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir